青柳臣一 blog : .NET や C# がメインの blog

.NET や C# がメインの blog
投稿数 - 548, コメント - 269, トラックバック - 205

Nullable Boxing その2

Nullable Boxing」 で書いた nullable のデザインチェンジについてのその2。

Somasegar's WebLog:Nulls not missing anymore
開発部門の副社長である Somasegar 氏 の blog で今回のデザインチェンジについて書かれています。まず、

  • nullable なものを box 化すると null だったときは null に、null でなかったときはそれなりの値になる。

と。これはわかりやすいので OK と。
で、unbox 化のほうですが、私が上の記事で書いたように

  • たとえば int? を box 化すると、それは int でもあり int? でもある。
    だから
      int? i = 1;
      object o = i;
      int x = (int)o;
    と書ける。

というだけでなく、

  • int を box 化したものも、int てもあり int? でもある。
    だから
      int i = 1;
      object o = i;
      int? x = (int?)o;
    と書ける。

ということになるようです。
なるほどなぁ。型システムが nullable を認識しているから、unbox 化する際に nullable を引っぺがすことも、nullable にすることも自由にできるってわけですね。
しかも、
  int? x = 0;
  IComparable ic = x;
というようなこともできると。これは、int? である x から int を取り出して、その int が implements している IComparable を取り出している、ということでいいのかな?

sab39:How to completely screw up a good idea: Nullable types in C# 2.0
こちらの blog は日付 (2005年 4月 19日) から言って、今回のデザインチェンジとは無関係に書かれたものだと思いますが nullable の動作についてとてもわかりやすい表が載ってます。この表は

  • 普通の参照型
  • 理想的 (ideal) な nullable
  • Nint (C# で自分で実装した struct みたいです)
  • C# 2.0 beta2 での nullable

の比較になっているんですが、今回のデザインチェンジの内容からするとほぼ 「ideal な nullable」 の列の動作になったということなような気がします。(int? y = t ? 1 : null; という三項演算子はさすがに無理なような気がする。型システムというより C# コンパイラががんばればできそうな気はするけど)

投稿日時 : 2005年8月18日 19:09

トラックバックは下記のURLにpingを送信してください。
TrackBack URL: http://www.divakk.co.jp/blog/aoyagi/services/trackbacks/6977.aspx

フィードバック

# Nullable Type の仕様変更

Nullable Boxinghttp://www.divakk.co.jp/blog/aoyagi/archive/2005/08/10/6962.aspx
Nullable Boxing その2http://www.divakk.co.jp/blog/aoyagi/archive/2005/08/18/6977.aspx...
2005/08/19 1:13 | HIDORI on The Web: 渋木宏明(ひどり) blog (トラックバック)

# [.NET]S. Somasegar 氏の Weblog

青柳さんのところより.Somasegar’s WebLog: 「Nulls not missing anymore」 開発部門の副社長である Somasegar 氏 の blog で今回のデザインチェンジについて書かれています。Somasegar 氏ですが,Imagine Cup 2005 World Festival や Tech・Ed 2005 Yokohama で来日されていましたね. http://pc.watch.impress.co.jp/docs/2005/0802/ms.htm Imagi ...
2005/08/21 6:55 | NyaRuRuの日記 (トラックバック)

# If演算子とnull許容値型

If演算子とnull許容値型
2008/02/19 0:00 | katamari.wankuma.com (トラックバック)

コメントの投稿

タイトル  
名前  
URL
コメント   
Protected by Clearscreen.SharpHIPこの絵に表示されている文字列を入力してください (半角で4文字です):