次の方法で共有


BC40028: パラメーター '<parametername>' の型が CLS に準拠していません

プロシージャは <CLSCompliant(True)> としてマークされますが、 <CLSCompliant(False)>としてマークされている型、マークされていない型、または非準拠型であるために修飾されない型を持つパラメーターを宣言します。

プロシージャが言語非依存コンポーネントおよび Language-Independent コンポーネント (CLS) に準拠するには、CLS 準拠型のみを使用する必要があります。 これは、パラメーターの型、戻り値の型、およびすべてのローカル変数の型に適用されます。

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

CLSCompliantAttributeをプログラミング要素に適用する場合は、属性の isCompliant パラメーターを True または False に設定して、コンプライアンスまたは非準拠を示します。 このパラメーターには既定値がないため、値を指定する必要があります。

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

既定では、このメッセージは警告です。 警告を非表示にする方法や、警告をエラーとして扱う方法の詳細については、「 Configuring Warnings in Visual Basic」をご覧ください。

エラー ID: BC40028

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

  • プロシージャがこの特定の型のパラメーターを受け取る必要がある場合は、 CLSCompliantAttributeを削除します。 プロシージャを CLS 準拠にすることはできません。

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

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