言語間の問題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:56 UTC 版)
異なる言語間でオブジェクトシンボルが共有できる場合など、識別子に関連した問題が発生することがある。 C#やC++/CLIでは大文字/小文字が区別されるので、同じ名前空間内に大文字/小文字の差異しかない識別子を持つ複数の型を定義したり、同じ型内に大文字/小文字の差異しかない識別子を持つ複数のメソッドやプロパティを定義したりすることができる。しかし、これらを公開 (public/protected) シンボルとして含むアセンブリ(ライブラリ)を作成し、そのアセンブリを、大文字/小文字を区別しないVB.NETで使おうとすると、同じ名前の識別子が複数存在する(競合)と判断されてコンパイルエラーになる。 また、共通中間言語では文法上の曖昧さが生じないため、記号や空白が含まれる識別子が許容されており、F#などでは記号や空白を含む識別子を使う手段が提供される。しかし、C#など非対応の言語からはその識別子を扱うことはできず、リフレクションなどの手段を使わない限り参照することができない。 この問題を回避するためにライブラリ (API) などは共通言語仕様 (CLS) に従うべきとされている。 また、JavaScriptやJSONでは$(ドルマーク)が識別子として使える。$が識別子として利用できない言語からJSONを利用する場合、通常はdata.hogeのようにアクセスできる言語でもdata["hoge$piyo"]のように文字列として処理するなど、回避策をとる必要が出る。
※この「言語間の問題」の解説は、「識別子」の解説の一部です。
「言語間の問題」を含む「識別子」の記事については、「識別子」の概要を参照ください。
- 言語間の問題のページへのリンク