省略可能なパラメータ <parametername> に対する省略可能な値の型は、CLS に準拠していません

更新 : 2007 年 11 月

プロシージャが <CLSCompliant(True)> でマーク付けされていますが、Optional (Visual Basic) パラメータが非準拠型の既定値で宣言されています。

プロシージャを 共通言語仕様 (CLS) に準拠させるためには、CLS 準拠の型のみを使う必要があります。これはパラメータの型、戻り値の型、およびすべてのローカル変数の型に対して言えることです。また、省略可能なパラメータの既定値にも適用されます。

次の Visual Basic データ型は CLS に準拠していません。

CLSCompliantAttribute 属性をプログラミング要素に適用するときは、属性の isCompliant パラメータを True または False に設定して準拠または非準拠を示します。このパラメータの既定値はありません。値を指定する必要があります。

CLSCompliantAttribute を要素に適用しなかった場合は、非準拠と見なされます。

既定では、このメッセージは警告です。警告を非表示にする方法や、警告をエラーとして扱う方法の詳細については、Visual Basic での警告の構成 を参照してください。

Error ID: BC40042

このエラーを解決するには

  • 省略可能なパラメータがこの特定の型の既定値を持つ必要がある場合は、CLSCompliantAttribute を削除します。このプロシージャを CLS に準拠させることはできません。

  • プロシージャを CLS に準拠させる必要がある場合は、この既定値の型を CLS に準拠した最も近い型に変更します。たとえば、2,147,483,647 を超える値の範囲が必要でない場合は、UInteger の代わりに Integer を使用できます。範囲を拡張する必要がある場合は、UInteger を Long で置き換えてください。

  • オートメーションまたは COM オブジェクトとやり取りする場合は、一部の型に .NET Framework とはデータ幅が異なるものがあることに注意してください。たとえば、int は他の環境では 16 ビットです。そのようなコンポーネントから 16 ビットの整数を受け取る場合は、Visual Basic のマネージ コードで、Integer 型ではなく Short 型で宣言してください。

参照

概念

CLS 準拠コードの記述