著作一覧 |
C#の仕様でなんでこういう仕様を入れたのだろう? と不思議になるのが識別子の@プリフィクスだ。
@をつけるとキーワードを識別子として利用できる。
確かに、rubyでkalssという変数名を見るとうーんと思わないでもないのだが、でもそこまでしてキーワードを使いたいものかなぁ。
class @class { internal Type @typeof { get; set; } static void Main() { var @class = new @class(); @class.@typeof = typeof(@class); Console.WriteLine(@class.@typeof); // => A+class } }
ジェズイットを見習え |
他の.NET言語のプログラムとの互換性のためではないでしょうか。たとえば、F#で作られた「this」という名前の関数をC#から呼び出さなければならない、というようなことはありそうです。
おおなるほど。それは相当納得が行きます(でも、上の@classのNameがA+classになっているところをみると、@thisはA+thisになって、結局解決できないのではないか疑惑もあります)。