ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  420  : 記事  0  : コメント  9718  : トラックバック  76

ニュース

さて、今年は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

http://csharper.blog57.fc2.com/blog-entry-211.html

ほぉ~不完全な(初期化されていない)状態とはいえ System.Void のインスタンスが作れるんだ。
というわけで試してみましたよっと
実行してみると Activator と Assembly 使ったものは「System.Void のインスタンスを動的に作成できません」とでるが FormatterServices を使うとちゃんと System.Void が出力されますね。
じつは、.NET Framework 1.1 までは上記のどれでも System.Void のインスタンスは作成できてました。
さらに FormatterServices.GetUninitializedObject を使った場合、抽象クラスのインスタンスやインターフェースのインスタンスも作成できたりしました。
具象クラスや実装クラスのインスタンスではなく、抽象クラスやインターフェースのインスタンスです。
実体何だよ?って思いますが作れるものは作れるんです。
2.0 以降では抽象クラスのインスタンスは作成できませんと怒られます。

まあ、インスタンスは作れますが C# では Void と宣言することが不可能なため、少し前に中さんが書いてたようなジェネリクスなどに利用することは無理ですけど。
コンストラクタを実行しないってことは何らかのマーキングのようなものだけ行っているんでしょうか?

気がつけば 300 エントリ目、よくがんばった、俺
投稿日時 : 2008年4月25日 23:17

コメント

# re: System.Void のインスタンスを作る 2008/04/26 12:52 シャノン
こんな方法も
http://blogs.wankuma.com/shannon/archive/2007/01/18/56860.aspx

# re: System.Void のインスタンスを作る 2008/04/26 13:51 THREE-ONE
あーこれ Void 型返すんですね。
MethodInfo.Invoke が void 戻りのメソッド実行すると null 返しやがるので null だと思ってました。

# re: System.Void のインスタンスを作る 2018/07/23 15:39 billtao
http://www.braindumpnow.com Coach Bags Outlet
http://www.wowconomics.com Coach Outlet Online
http://www.nscodecenter.com Coach Outlet Online
http://www.votecap.ca Michael Kors Outlet Canada
http://www.40ozbounce-tube.net Michael Kors Outlet
http://www.lassalsitas.com Michael Kors Sale
http://www.babychangingtabletips.com Cheap Jordans For Sale
http://www.cattywampuslife.com Cheap Jordans For Sale
http://www.ezrims4rent.com Cheap NFL Jerseys From China
http://www.july17action.org Wholesale NFL Jerseys
http://www.kellyheatingandairoh.com Cheap Authentic NFL Jerseys
http://www.naturewisefarm.com Authentic NFL Jerseys
http://www.amdrumassn.org Wholesale NFL Jerseys
http://www.theoldglorydrumshop.com Official NFL Jerseys
http://www.chinchworld.com Cheap NFL Jerseys From China


Post Feedback

タイトル
名前
Url:
コメント: