Archive for 9月 2014
C# Design Note
昨日ちょっと話してきたもの。
Roslynがオープンソースになって、仕様が固まる前のディスカッションとかも見えるようになったよというのの紹介と、正式な文法をどうするか悩んでる新機能があってどういうところで悩んでいるか2例ほど挙げて説明。
__makerefとか__arglistとか
知る人ぞ知る機能の説明、今更追加。
http://ufcpp.net/study/csharp/sp_makeref.html
一応、C# 1.0の頃からあるけども、仕様外・ドキュメント一切なし(C#の仕様書にも書かれてないし、当然、標準化資料にも書かれてない。MSDN等の言語リファレンスにも説明なし)の隠し機能。かろうじて、「それ、仕様外の機能だよ」warningメッセージの解説ページ内に __arglist の文字が出てくる程度です。
みんな、どこでこんな隠し機能のこと調べてくるんだろう?(こんなどこにも説明のない機能なのに、なぜかStackOverflowとかには詳細に調べてる人がいる)
仕様外の機能だし、今まで書くかどうか迷ってて結局書いてなかったものの、思えば、COM特別扱い(COM限定のref省略とか引数付きプロパティとか)と比べたら大差ないなと思って記事化してしまうことにしました。
ちなみに、Roslyn
もちろん、コードネーム“Roslyn”、正式名称「.NET Compiler Platform」、要するにC#の新コンパイラーでも __makeref とかちゃんと使えます(互換性崩してないので当たり前だけども)。
Roslynがオープンソースになった時、「見たこともない謎のキーワードがあるんだけど何これ?」なんていう人もいたり。
↓見ての通り、探せば確かにキーワード一覧の中に __makeref とかもまぎれてます。
まあ、なぜ今更こんな記事書くことにしたかというと、この話題を見て __arglist の存在を思いだしたりしたからだったり。