仕事の都合で参照しなければいけないVB.NETソースがあり、その内容をVisual Studioで見ていたのですが、一斉に警告「~はCLSに準拠していません」が並びました。
あまり見たことが無い警告だったので調べたのですが、これ、「先頭がアンダースコアであるパブリックメンバーを作っていけない」というCLSのルールに反しているよ、という警告なんですね。VB.NETでは別にアンダースコアで始まる変数名やプロパティ名を作っても動きますが、.NETのアセンブリとしてそれを使った場合、ほかの言語でそのアセンブリを利用した際にエラーや問題動作につながる可能性がある、ということのようです。
その「ほかの言語」とは……多分C++ですね(なんか、あまり明記してない>MSのサイト)。C++ではアンダースコアで始まる名称は予約語とされているので、もしC++自体が内部で使う名前と被ったら……ということではないかと思います。
- 名前
は CLS に準拠していません。/MSDN - エラーメッセージ(VB.NET) - https://msdn.microsoft.com/ja-jp/library/k5645wwb.aspx
C++での名称についてはここに記載があります。
それにしても、この警告がわんさかでる状態のまま引き継いでいるこの作者さんって……。
プログラミング.NET Framework 第4版 (Microsoft Press)
- 作者: Jeffrey Richter,藤原雄介
- 出版社/メーカー: 日経BP社
- 発売日: 2013/10/10
- メディア: 単行本
- この商品を含むブログ (9件) を見る