misc.log

日常茶飯事とお仕事と

「~はCLSに準拠していません」警告が出る

仕事の都合で参照しなければいけない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++での名称についてはここに記載があります。

予約名/MSDN - Deep C++
https://msdn.microsoft.com/ja-jp/library/Cc440188(v=VS.71).aspx


それにしても、この警告がわんさかでる状態のまま引き継いでいるこの作者さんって……。

プログラミング.NET Framework 第4版 (Microsoft Press)

プログラミング.NET Framework 第4版 (Microsoft Press)