CLSCompliant 属性は、.NET 言語の古いバージョンを考慮しますか?
-
12-09-2019 - |
質問
たとえば、Visual Basic .net には以前は演算子のオーバーロードがなかったので、通常のメソッド (operator+ ではなく Add) としても提供されていない場合、型をオーバーロードした演算子を使用できないと読みました。
VB にはこの機能が備わっているため、演算子のオーバーロードのみではなく、Add、Subtract などの通常の静的メソッドがある場合でも、CLSCompliant 属性は考慮されますか?
口頭静的メソッドを使用せずにいくつかの型を作成しましたが、演算子のオーバーロードのみであり、C# コンパイラは気にしませんでした。問題があれば警告してくれるんですよね?
解決
CLS 準拠は関係ありません 年上の 何でも - これは単に、合理的に実行すべき機能のコアセットです。 期待する (コードを使用するときに) 処理する任意の言語。たとえば、それは そうではありません 言語では大文字と小文字が区別されるため、メンバー "Foo" と "foo" は C# では合法ですが、CLS に準拠していないと考えるのが合理的です。
コンパイラは、要求に応じて警告を出します。追加 [CLSCompliant(true)]
タイプ/アセンブリ/などに基づいて、あなたの主張を検証します。
ISV の場合は、CLS への準拠について検討することをお勧めします。自分自身とチームのためだけにコードを作成している場合は、おそらくオーバーヘッドは必要ありません。
所属していません StackOverflow