Aracılığıyla paylaş


NULL olabilecek türleri (c Programlama Kılavuzu #) kullanarak

NULL yapılabilir türler bir temel alınan tür ve ek bir tüm değerlerini temsil eden null değeri.NULL olabilecek türleri iki yoldan biriyle bildirilir:

System.Nullable<T> variable

-veya-

T? variable

TNULL türü temel türüdür.Tolması dahil herhangi bir değer türü struct; Bu, bir başvuru türü olamaz.

NULL türü ne zaman kullanabilir, bir örnek için sıradan bir Boolean değişkeni iki değer nasıl olabilir düşünün: true ve false."Tanımsız" belirten değer yoktur.Birçok programlama uygulamalarında değişkenleri tanımsız bir durumda ortaya çıkabilir, etkileşimleri, blogunuzdan veritabanı.Örneğin, bir veritabanında yer alan değerler: true veya false olabilir, ancak herhangi bir değer hiç ayrıca içerebilir.Benzer şekilde, baþvuru türleri ayarlanabilecek en null , değil başlatıldıklarında belirtmek için.

Bu geniş ekstra programlama iş durumu bilgileri, özel değerler vb. kullanımını depolamak için kullanılan ek değişkenler oluşturabilirsiniz.NULL türü değiştirici tanımsız bir değeri belirten değer türü değişkenleri oluşturmak C# sağlar.

NULL türü örnekleri

Herhangi bir değer türü null türü için temel olarak kullanılabilir.Örne?in:

int? i = 10;
double? d1 = 3.14;
bool? flag = null;
char? letter = 'a';
int?[] arr = new int?[10];

NULL yapılabilir türler üyeleri

İki ortak salt okunur özellik NULL türünün her örneği vardır:

  • HasValue

    HasValuetür bool.Ayarlanır true değişken boş olmayan bir değer içerdiğinde.

  • Value

    Valuetemel alınan tür aynı türde değil.HasValue Olan true, Value anlamlı bir değer içerir.If HasValue is false, accessing Value will throw a InvalidOperationException.

Bu örnekte, HasValue üye görüntülemeyi denemeden önce değişken bir değer içeren olup olmadığını sınamak için kullanılır.

int? x = 10;
if (x.HasValue)
{
    System.Console.WriteLine(x.Value);
}
else
{
    System.Console.WriteLine("Undefined");
}

Bir değer için sınama aşağıdaki örnekte gösterildiği şekilde de yapılabilir:

int? y = 10;
if (y != null)
{
    System.Console.WriteLine(y.Value);
}
else
{
    System.Console.WriteLine("Undefined");
}

Açıkça dönüştürmeler

NULL türü normal bir türü için açıkça bir cast ile veya kullanarak çevrilebilir Value özelliği.Örne?in:

int? n = null;

//int m1 = n;      // Will not compile.
int m2 = (int)n;   // Compiles, but will create an exception if n is null.
int m3 = n.Value;  // Compiles, but will create an exception if n is null.

Kullanıcı tanımlı dönüştürme iki veri türleri tanımlı ise, bu veri türleri null sürümleriyle aynı dönüştürme de kullanılabilir.

Örtük dönüştürmeler

NULL türünde bir değişken ayarlanabilir null ile null anahtar sözcüğünü aşağıdaki örnekte gösterildiği gibi:

int? n1 = null;

Sıradan bir tür dönüştürme null olabilecek bir tür örtülü.

int? n2;
n2 = 10;  // Implicit conversion.

İşleçler

Önceden tanımlanmış Tekli ve ikili işleç ve değer türleri için kayıtlı kullanıcı tanımlı işleçler nullable türlerine göre de kullanılabilir.Bu operatörler işlenenler null ise null değeri üretir; Aksi halde, işleç sonucu hesaplamak için içerdiği değeri kullanır.Örne?in:

int? a = 10;
int? b = null;

a++;         // Increment by 1, now a is 11.
a = a * 10;  // Multiply by 10, now a is 110.
a = a + b;   // Add b, now a is null.

Nullable türleriyle nullable türlerinden değeri null'dır ve diğer değilse karşılaştırmaları gerçekleştirdiğinizde, tüm karşılaştırmalar için değerlendirmek false dışında != (eşit değildir).Belirli bir karşılaştırma döndürdüğünden, varsayalım değil önemlidir false, tersi durumda döndürür true.Aşağıdaki örnekte, 10, dan büyük değilse veya null değerine eşit.Yalnızca num1 != num2 veren true.

int? num1 = 10;
int? num2 = null;
if (num1 >= num2)
{
    Console.WriteLine("num1 is greater than or equal to num2");
}
else
{
    // This clause is selected, but num1 is not less than num2.
    Console.WriteLine("num1 >= num2 returned false (but num1 < num2 also is false)");
}

if (num1 < num2)
{
    Console.WriteLine("num1 is less than num2");
}
else
{
    // The else clause is selected again, but num1 is not greater than
    // or equal to num2.
    Console.WriteLine("num1 < num2 returned false (but num1 >= num2 also is false)");
}

if (num1 != num2)
{
    // This comparison is true, num1 and num2 are not equal.
    Console.WriteLine("Finally, num1 != num2 returns true!");
}

// Change the value of num1, so that both num1 and num2 are null.
num1 = null;
if (num1 == num2)
{
    // The equality comparison returns true when both operands are null.
    Console.WriteLine("num1 == num2 returns true when the value of each is null");
}

/* Output:
 * num1 >= num2 returned false (but num1 < num2 also is false)
 * num1 < num2 returned false (but num1 >= num2 also is false)
 * Finally, num1 != num2 returns true!
 * num1 == num2 returns true when the value of each is null
 */

Her ikisi de null null olabilecek iki türünden bir eşitlik karşılaştırma değerlendiren true.

??İşleç

?? İşleç tanımlar yapılamayan bir tür null türü atandığında, varsayılan değer döndürülür.

int? c = null;

// d = c, unless c is null, in which case d = -1.
int d = c ?? -1;

Bu işleç ile birden çok null yapılabilir türler de kullanılabilir.Örne?in:

int? e = null;
int? f = null;

// g = e or f, unless e and f are both null, in which case g = -1.
int g = e ?? f ?? -1;

Bool?type

bool? Null türü, üç farklı değerler içerebilir: doğru, yanlış ve null.Bool atama hakkında daha fazla bilgi için?Bir bool için bkz: Nasıl yapılır: Cast bool karşı güvenli mi? bool (C# Programlama Kılavuzu).

SQL'de kullanılan Boole değişken türü null Booleler gibidir.Tarafından üretilen sonuçlar sağlamak için & ve| operatörler üç değerli Boolean türü ile tutarlı sql, aşağıdaki önceden tanımlı işleçler sağlanır:

bool? operator &(bool? x, bool? y)

bool? operator |(bool? x, bool? y)

Bu operatörler sonuçları aşağıdaki tabloda listelenmiştir:

X

y

x ve y

x|y

true

true

true

true

true

false

false

true

true

null

null

true

false

true

false

true

false

false

false

false

false

null

false

null

null

true

null

true

null

false

false

null

null

null

null

null

Ayrıca bkz.

Başvuru

NULL olabilecek türleri (C# Programlama Kılavuzu)

Kutulama Nullable türleri (c Programlama Kılavuzu #)

Kavramlar

C# Programlama Kılavuzu

Null değer türleri (Visual Basic)