Nullable Değer Türleri
int? ve Nullable struct.
Nullable Değer Türleri, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.
Null Atanabilir Değer Türleri Neden Kullanılır?
int, bool ve DateTime gibi değer türleri her zaman bir değer taşır. Bir int varsayılan olarak 0 değerini alır; hiçbir zaman "değer yok" anlamına gelmez.
Bazen yanıtlanmamış bir anket alanı veya boş bir veritabanı sütunu gibi eksik verileri temsil etmeniz gerekir. Null atanabilir değer türleri, bir değer türünün null da taşımasına olanak tanır.
int? ile Tanımlama
Bir değer türünü null atanabilir yapmak için türün sonuna ? ekleyin. int? herhangi bir tamsayıyı veya null değerini taşıyabilir.
Günlük C# kodunda null atanabilir değer türlerini yazmanın en yaygın yolu budur.
int? age = null;
int count = 5;
age = count;
System.Console.WriteLine(age);Nullable<T> Perde Arkasında
? söz dizimi bir kısaltmadır. int?, Nullable<int> ile tamamen aynı türdür.
Nullable<T>, bir değer türünü saran ve değerin mevcut olup olmadığını izleyen bir bayrak ekleyen bir yapıdır.
Nullable<int> a = 10;
int? b = 10;
System.Console.WriteLine(a == b);HasValue ve Değer
Her null atanabilir tür iki özellik sunar. Bir değer mevcut olduğunda HasValue true olur; Value ise temel değeri döndürür.
HasValue false iken Value okumak InvalidOperationException fırlatır; bu nedenle önce denetleyin.
int? score = 42;
if (score.HasValue)
{
System.Console.WriteLine(score.Value);
}Tam Bir Örnek
İşte tam bir program. Bir değer atar, HasValue özelliğini denetler ve sonucu yazdırır.
Null atanabilir bir türün gerçekten veri içerdiğinde nasıl davrandığını görmek için bunu çalıştırın.
using System;
class Program
{
static void Main()
{
int? temperature = 21;
if (temperature.HasValue)
Console.WriteLine("Temp: " + temperature.Value);
else
Console.WriteLine("No reading");
}
}Null Olduğunda
null atamak, HasValue özelliğinin false döndürmesine neden olur. Ardından else dalı çalışır.
Bu örüntü, isteğe bağlı değerleri uygulamanızın çökmesine neden olmadan güvenli biçimde işlemenizi sağlar.
using System;
class Program
{
static void Main()
{
int? temperature = null;
if (temperature.HasValue)
Console.WriteLine(temperature.Value);
else
Console.WriteLine("No reading");
}
}GetValueOrDefault
GetValueOrDefault() değer mevcutsa onu, aksi hâlde o tür için varsayılan değeri döndürür (örneğin int için 0).
Kendi yedek değerinizi de geçebilirsiniz: GetValueOrDefault(100), null olduğunda 100 döndürür.
int? quantity = null;
int result = quantity.GetValueOrDefault(100);
System.Console.WriteLine(result);Null Kabul Eden Türe Örtük Dönüşüm
Normal bir int, her düz değerin null kabul eden geçerli bir değer olması nedeniyle otomatik olarak int? türüne dönüşür.
Tersi otomatik gerçekleşmez: int? türünden int türüne geçmek için açık bir dönüştürme veya yedek değer gerekir; çünkü null kabul eden değer null olabilir.
int plain = 7;
int? wrapped = plain;
int back = (int)wrapped;
System.Console.WriteLine(back);Diğer Değer Türleriyle Null Kabul Eden Kullanım
Her değer türü kullanılabilir: bool?, double?, DateTime? ve hatta özel yapılar.
Bir bool? üç duruma sahiptir: true, false ve null. Bu özellik, yanıtlanmamış evet veya hayır soruları için kullanışlıdır.
bool? agreed = null;
double? price = 9.99;
System.Console.WriteLine(agreed.HasValue);
System.Console.WriteLine(price.Value);Başvuru Türleri Zaten Null Kabul Eder
string gibi sınıflar ve diziler zaten null olabilir; bu nedenle Nullable<T> sarmalayıcısına ihtiyaç duymazlar.
Başvuru türlerindeki ? (örneğin string?) farklı bir anlam taşır: Nullable<T> yapısı değil, null kabul eden başvuru türü ek açıklamasıdır.
Null Kabul Eden Değerleri Karşılaştırma
Karşılaştırmalar çalışır, ancak null değerinin özel davrandığını unutmayın. İki null eşittir ve null içeren her sıralı karşılaştırma false döndürür.
Bu nedenle null < 5 false değerini, null > 5 de yine false değerini verir.
int? x = null;
System.Console.WriteLine(x < 5);
System.Console.WriteLine(x == null);Hızlı Kontrol
Null kabul eden değer türleriyle ilgili anlayışınızı sınayın.
Özet
Null kabul eden değer türleri, değer türlerinin null da taşımasını sağlar. Bunları int? biçiminde yazarsınız; bu, Nullable<int> ile aynıdır.
Denetlemek için HasValue, değeri okumak için (yalnızca mevcut olduğunda) Value, güvenli bir yedek değer için de GetValueOrDefault() kullanın. Başvuru türleri kendi başlarına zaten null kabul eder.
Sıkça Sorulan Sorular
“Nullable Değer Türleri” dersi ücretsiz mi?
Evet — “Nullable Değer Türleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.
“Nullable Değer Türleri” dersinde ne öğreneceğim?
int? ve Nullable struct. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Nullable Değer Türleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Nullable Değer Türleri
- Null Koşullu İşleç
- Null Birleştirme İşleçleri
- Null Değerlere Karşı Koruma