Out of Memory

本ブログは更新を停止しました。Aerieをよろしくお願いいたします。

目次

Blog 利用状況

ニュース

2009年3月31日
更新を停止しました。引き続きAerieを御愛顧くださいませ。
2009年2月3日
原則としてコメント受付を停止しました。コメントはAerieまでお願いいたします。
詳細は2月3日のエントリをご覧ください。
2008年7月1日
Microsoft MVP for Developer Tools - Visual C++ を再受賞しました。
2008年2月某日
MVPアワードがVisual C++に変更になりました。
2007年10月23日
blogタイトルを変更しました。
2007年7月1日
Microsoft MVP for Windows - SDKを受賞しました!
2007年6月20日
スキル「ニュース欄ハック」を覚えた!
2006年12月14日
記念すべき初エントリ
2006年12月3日
わんくま同盟に加盟しました。

カレンダー

中の人

αετο? / aetos / あえとす

シャノン? 誰それ。

顔写真

埼玉を馬鹿にする奴は俺が許さん。

基本的に知ったかぶり。興味を持った技術に手を出して、ちょっと齧りはするものの、それを応用して何か形にするまでは及ばずに飽きて放り出す人。

書庫

日記カテゴリ

re: 拡張メソッドなら、this == null でもいい。

>GetStrにとって、こういう呼ばれ方をすることが迷惑、ということ。

確かに迷惑ではありますが,必要な場所では NullReferenceException が発生するわけで,C/C++ の未初期化変数へのアクセスのような悪性の問題ではないと思っています.

ちなみに,個人的な意見ですが,CLI が「this が this のように振る舞う」ということ自体を属性的に定義していなかったのは失敗だと思っています.this は元々特殊引数で,他のメソッド引数を this のように振る舞わせる仕組みは CLI には用意されていません.
このため,拡張メソッドのように「this の様に見える第一引数」のセマンティクスと,従来の this のセマンティクスとが,微妙に異なってしまっています.
例えば値型に定義されたインスタンスメソッドを,拡張メソッドは再現できません.これは CLI 規格が,参照型と値型で this の扱いを変えるためです.拡張メソッドでは値型タイプの this の積み方をどうしても再現できません.
ByRef を利用した拡張メソッドをサポートする VisualBasic はでは,さらにややこしくなります.
VisualBasic では,C# でいうところの ref キーワードを書かないため,
instance.Method()
の instance が ref 渡しということが実際に可能です.そのため,
instanceA.Swap( instanceB )
のようなコードも書けてしまいます.
このあたりの問題については,以下の記事が詳しいです.
http://blogs.msdn.com/vbteam/archive/2007/01/18/extension-methods-part-3.aspx
http://blogs.msdn.com/sreekarc/archive/2007/04/25/extension-methods.aspx

投稿日時 : 2008年1月17日 20:33