2009-08-26 10 views
0

これまでにこれが尋ねられたと確信していますが、同様の質問に対する検索ヒットを熟読しても答えは出ませんでした。拡張方式の推論のタイプ

Nullableに値があるかどうかをチェックするのはうんざりです。 myNullable<int> yourAgeint myAgeに割り当てることができません。なぜなら、yourAgeがnullの場合は例外が発生しますか?さらに、私たちの死亡年齢のいずれかがnullの場合、fxning SqlParameterに 'deafault'を割り当てるのを避けるために、なぜチェックを行う必要がありますか?私は文明化してもできませんmySqlParm = myAge.HasValue ? myAge.Value : DBNull.Value

null可能なタイプの特徴は何ですか?恐ろしいNullを避けるためには、pkIdに `-1 'を使用する必要があります。私たちは独自の拡張機能を追加することさえできません。

なぜパラメータを使用しているのですか?なぜ、すべての日付をfxning varchar(10)として保存しないのですか?

+2

うわー、あなたが怒っている –

+0

あなたの質問は何ですか? Nullable はデータベースと何が関係していますか? –

+1

多分、「拡張メソッドの型推論」は、あなたにこれを書いてもらうためのものですが、この記事の正しいタイトルではありません。 –

答えて

6

のはなぜyourAgeがnullの場合int myAgeからmyNullable<int> yourAgeとは 例外を取得割り当てることはできませんか?

もちろん可能です。ただ、最初にチェックせずにValueプロパティを使用します。

int myAge = yourAge.Value; 

yourAgeがnull含まれている場合は、例外が発生します。

+0

ありがとうございました@ Guffa、他の複雑さによって盲目になることはありませんでした。テストベースの例では – ProfK

3

多分このようなことをしたいですか?

public static object GetDatabaseValueFromNullableType<T>(this T? value) 
    where T: struct 
{ 
    return value.HasValue ? (object) value.Value : DBNull.Value; 
} 

、その後、あなたがそうのようにそれを使用することができます:

//this is just a test I wrote but you get the idea 
[Test] 
public void NullableTest() 
{ 
    int? something = null; 
    var value = something.GetDatabaseValueFromNullableType(); 
    Assert.IsTrue(value == DBNull.Value); 
} 
+0

+1です。あなたは恩恵を受けるべきですが、私は次の質問でそれを行うことができます。乞うご期待。 :-) – ProfK

関連する問題