たこぜりー研究室

大腸菌DNAは4.64Mbp。酵母は13Mbpで、ヒトは3Gbp

スポンサーサイト

#
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

LINQ 探索 #2

#445
すでに 2 回目にして LINQ からやや離れているが、C#3.0 探索と変換願います。

今回の疑問 : null になっているオブジェクトからでも拡張メソッドを NullReferenceException 例外が発生することもなく呼び出せるか?

C# 言語仕様なり MSDN Library なり探せば出るのだろうが、簡単に検証できそうなのでやっぱり VSTS2008 Beta2 (VPC) 上で実験してみる。

using System;
using System.Collections.Generic;

static class Program
{
  static void Main()
  {
    IEnumerable<int> source = null;
    Console.WriteLine(source.Any());
  }

  static bool Any<T>(this IEnumerable<T> source)
  {
    if (source != null)
    {
      using (var enumerator = source.GetEnumerator())
      {
        if (enumerator.MoveNext())
          return true;
      }
    }
    return false;
  }
}

で Ctrl + F5 をしてやると、
False
Press any key to continue . . .

となり、null でも動いてくれることがわかる。
ちなみに System.Linq 名前空間をインポートして、自分でかいた Any メソッドをコメントアウトしてやると、ArgumentNullException 例外が発生する。

コメント


コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURL:  http://takojelly.blog2.fc2.com/tb.php/445-f1a57094
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。