19

C#.netでnull許容型を使用する必要がある場合はどうなりますか?誰かが例を挙げて説明してもらえますか?

4

4 に答える 4

34

null許容型(null許容型を使用する場合)は、nullを値として取ることができる値型です。そのデフォルトはnull、値を割り当てなかったことを意味します。値型の例は、int、float、double、DateTimeなどです。これらの型にはこれらのデフォルトがあります

int x = 0;
DateTime d = DateTime.MinValue;
float y = 0;

null許容型の代替案の場合、上記のいずれかのデフォルトはnullです。

int? x = null; //no value
DateTime? d = null; //no value

これにより、オブジェクト、文字列などの参照型のように動作します。

string s = null;
object o = null;

これらは、テーブルから返される値がである場合に、データベースからの値を処理するときに非常に役立ちますNULL。データベーステーブルでNULLになる可能性のある整数値を想像してみてください。このような0値は、c#変数がnull許容でない場合(通常の整数)でのみ表すことができます。

EndDateまた、将来の実際の時間まで値が決定されない列を想像してください。DBではNULLに設定できますが、C#に格納するにはnull許容型が必要です。

DateTime StartDate = DateTime.Today;
DateTime EndDate? = null; //we don't know yet
于 2012-11-05T18:51:45.453 に答える
5

C#.netでnull許容型を使用する必要がある場合はどうなりますか?

id特定のを表す整数変数があると想像してくださいid

1、、またはその他のものを格納できます。44ただし、IDがわからない場合はどうなりますか。-1またはを格納することはできません0。割り当てることを考えているかもしれませんnullが、通常nullは値型に割り当てることはできません。

int id=null;//error

Nullable typeこれを可能にします。


のような値型は値として表すint,double,char.. ことができませんNULL

値型で表すnullには、.を使用する必要がありますnullable type

値型の後に続く値型として示されます?

int? id=null;

これはに変換されます

Nullable<int> id=new Nullable<int>();

null許容型のデフォルト値はですnull

于 2012-11-05T18:53:34.657 に答える
1

Nullable 型は、C# 2.0 で導入された新しい概念であり、ユーザーは C# 言語のプリミティブ データ型に null 値を割り当てることができます。ここで重要なのは、Nullable 型が Structure 型であることです。

BlogPost: Nullable 型 - プログラミング言語に Nullable 型が必要な理由

于 2012-11-05T18:26:21.733 に答える
1

from: http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx Nullable 型は System.Nullable 構造体のインスタンスです。null 許容型は、基になる値の型の値の通常の範囲に加えて、追加の null 値を表すことができます。たとえば、「Int32 の Nullable」と発音される Nullable<Int32> には、-2147483648 から 2147483647 までの任意の値を割り当てることも、null 値を割り当てることもできます。Nullable<bool> には、値 true または false、または null を割り当てることができます

class NullableExample
{
    static void Main()
    {
        int? num = null;
        if (num.HasValue == true)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        //y is set to zero
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}
于 2012-11-05T18:28:19.260 に答える