CLSCompliant 属性は、.NET 言語の古いバージョンを考慮しますか?

StackOverflow https://stackoverflow.com/questions/960622

  •  12-09-2019
  •  | 
  •  

質問

たとえば、Visual Basic .net には以前は演算子のオーバーロードがなかったので、通常のメソッド (operator+ ではなく Add) としても提供されていない場合、型をオーバーロードした演算子を使用できないと読みました。

VB にはこの機能が備わっているため、演算子のオーバーロードのみではなく、Add、Subtract などの通常の静的メソッドがある場合でも、CLSCompliant 属性は考慮されますか?

口頭静的メソッドを使用せずにいくつかの型を作成しましたが、演算子のオーバーロードのみであり、C# コンパイラは気にしませんでした。問題があれば警告してくれるんですよね?

役に立ちましたか?

解決

CLS 準拠は関係ありません 年上の 何でも - これは単に、合理的に実行すべき機能のコアセットです。 期待する (コードを使用するときに) 処理する任意の言語。たとえば、それは そうではありません 言語では大文字と小文字が区別されるため、メンバー "Foo" と "foo" は C# では合法ですが、CLS に準拠していないと考えるのが合理的です。

コンパイラは、要求に応じて警告を出します。追加 [CLSCompliant(true)] タイプ/アセンブリ/などに基づいて、あなたの主張を検証します。

ISV の場合は、CLS への準拠について検討することをお勧めします。自分自身とチームのためだけにコードを作成している場合は、おそらくオーバーヘッドは必要ありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top