Frameworkの上で動く言語は、C#、VB.NET、C++/CLI、J#、Delphi.NETなどなど、多数ある。これらは全て、MSILと呼ばれる中間コードへとコンパイルされる。MSILへコンパイルされたアセンブリは、他の.NET言語から簡単に利用できる。ある言語では実装されているが、ある言語では実装されていない機能がある。C++やC#の「ポインタ」は、VB.NETでは利用できない。全ての.NET言語がサポートしなければならない仕様を共通言語仕様(CLS)と呼ぶ。CLSは、外部に公開する部分にだけ適用される。メソッド内の処理コードなどには関係ない。先程挙げた「ポインタ」は、CLSに定義されていないため、実装されている言語とされていない言語が存在する。クラスライブラリで公開しているクラスのメンバに、ポインタを返すメソッドがあったとする。ポインタはCLSに定義されていないため、このメソッドは、CLSに準拠していないメンバとなる。VB.NETからこのメンバを利用することはできない。クラスライブラリを開発する際に、開発言語とは異なる言語からの利用が想定される場合、クラスライブラリをCLS準拠にする必要がある。CLSに準拠させるには、当然、公開する箇所がCLSの規定に従っている必要がある。それだけではなく、CLS準拠であることを明示的に示さなければならない。CLS準拠であることを明示的に示すには、CLSCompliantAttributeを用いる。System.CLSCompliant(true)]を付加することで、アセンブリに含まれる全ての型、メンバがCLS準拠であると示したことになる。CLS非準拠な型やメンバが含まれている場合は、個別に[System.CLSCompliant(false)]を付加することで、部分的にCLS非準拠を示せる。Frameworkの主要クラスライブラリであるmscorlibも、ほとんどの型はCLSに準拠しているが、UInt32構造体など、一部CLSに準拠していない型が含まれている。]実の所、CLSCompliant属性を付けることによる利点がいまいちわからなかったり・・・(・∀・;)別に付けなくても、C#のアセンブリをVBから利用することできるよなぁ・・・。全ての型がCLS準拠じゃないことになって、その型を継承したり、引数の型にしたりすると、そいつもCLS非準拠になっちゃうけど、結局それで何が困るんだかわかんないや。-ブログ内検索カウンターアクセスカウンターおすすめプロフィールAuthor:よこけん性別は男です。生年月日は1984年2月頃です。社会人は2004年4月頃からやってます。C#は2004年10月頃からやってます。このブログは2006年7月頃からやってます。アプリケーションリンクopus-i商用可・加工可で、綺麗な素材を提供していらっしゃいます。紹介していらっしゃいます。中心に扱っていらっしゃいます。コマンドレットをまとめたスナップインです。クラスライブラリを作ってみました。最近の記事ブログ移転しました。返事を返せない場合があります。