共用方式為


CA1406:避免對 Visual Basic 6 用戶端使用 Int64 引數

型別名稱

AvoidInt64ArgumentsForVB6Clients

CheckId

CA1406

分類

Microsoft.Interoperability

中斷變更

中斷

原因

特別標記為元件物件模型 (COM) 可見的型別,會宣告採用 Int64 引數的成員。

規則描述

Visual Basic 6 COM 用戶端無法存取 64 位元整數。

根據預設,COM 可以看見下列各項:組件、公用型別、公用型別中的公用執行個體 (Instance) 成員,和公用實值型別的所有成員。但是,為了減少誤報的情形,這項規則要求必須明確陳述此型別的 COM 可視性、必須使用設定為 false 的 ComVisibleAttribute 來標記包含的組件,而且必須使用設定為 true 的 ComVisibleAttribute 來標記此型別。

如何修正違規

若要針對參數修正這個規則的違規情形,而這個參數的值一律是以 32 位元整數類表示,請將參數型別變更成 Int32。如果參數的值可能大於可用 32 位元整數類表示的值,請將參數型別變更成 Decimal。請注意,SingleDoubleInt64 資料型別的範圍上限都會遺失精確度。如果不需要在 COM 中看到成員,請利用已設定為 false 的 ComVisibleAttribute 來標記它。

隱藏警告的時機

如果確定 Visual Basic 6 COM 用戶端不會存取該型別,則您可以放心地隱藏這項規則的警告。

範例

下列範例顯示違反規則的型別。

Imports System
Imports System.Runtime.InteropServices

<Assembly: ComVisibleAttribute(False)>
Namespace InteroperabilityLibrary

   <ComVisibleAttribute(True)> _ 
   Public Class SomeClass

      Public Sub LongArgument(argument As Long)
      End Sub 

   End Class 

End Namespace
using System;
using System.Runtime.InteropServices;

[assembly: ComVisible(false)]
namespace InteroperabilityLibrary
{
   [ComVisible(true)]
   public class SomeClass
   {
      public void LongArgument(long argument) {} 
   }
}

相關規則

CA1413:避免在 COM 可見的實值類型中使用非公用欄位

CA1407:避免在 COM 可見類型中使用靜態成員

CA1017:以 ComVisibleAttribute 標記組件

請參閱

參考

Long 資料類型 (Visual Basic)

其他資源

與 Unmanaged 程式碼互通