Giriş
Nullable Yapısı ve Nullable Sınıfı farklı şeyler. Bu yapı derleyici tarafından şu tür kodlar için üretilir.
Nullable Yapısı iskelet olarak şöyle
İmzası şöyle.
Şöyle yaparız.
Nullable Yapısı ve Nullable Sınıfı farklı şeyler. Bu yapı derleyici tarafından şu tür kodlar için üretilir.
int? i = null;
İskeletNullable Yapısı iskelet olarak şöyle
struct Nullable<T>
{
private bool hasValue;
internal T value;
/* methods and properties I won't go into here */
}
Constructorİmzası şöyle.
public static implicit operator Nullable<T> (
T value
)
ÖrnekŞöyle yaparız.
DateTime? d = DateTime.Now;
Örnek
Şöyle yaparız.
Örnek
Şöyle yaparız.
Şöyle yaparız.
Açıklaması şöyle.
Diğer
Wrapping ve UnWrapping
Örnek
Wrapping değer atanması, unwrapping ise okunmasıdır. Şöyle yaparız.
Örnek
Açıklaması şöyle.
Şöyle yaparız.
Şöyle yaparız.
int? i = null;
Metodun içi şöyle.public override int GetHashCode() {
return hasValue ? value.GetHashCode() : 0;
}
Açıklaması şöyle.The hash code of the object returned by the Value property if the HasValue property is true, or zero if the HasValue property is false.
Şöyle yaparız.
int? i = null;
i.GetHashCode().Dump();
Çıktı olarak şunu alırız.GetType metodu0
Şöyle yaparız.
int? x = null;
Console.Write ("Hashcode: ");
Console.WriteLine(x.GetHashCode());
Console.Write("Type: ");
Console.WriteLine(x.GetType());
HasValue AlanıAçıklaması şöyle.
An instance for which HasValue is false is said to be null. A null instance has an undefined value. Attempting to read the Value of a null instance causes a System.InvalidOperationException to be thrown. The process of accessing the Value property of a nullable instance is referred to as unwrapping.Şöyle yaparız.
DateTime? d = null;
bool boolNotSet = d.HasValue;
Wrapping ve UnWrapping
Örnek
Wrapping değer atanması, unwrapping ise okunmasıdır. Şöyle yaparız.
int x = 5;
int? y = x; // Wrapping
int z = (int) y; // Unwrapping
Nullable ve ArrayÖrnek
Açıklaması şöyle.
params Delegate?[] delegates - It is an array of nullable DelegateElimizde şöyle bir kod olsun. Burada dizi nullable. Dizinin elemanları da Delegate?
params Delegate?[]? delegates - The entire array can be nullable
public static Delegate? Combine(params Delegate?[]? delegates)
{
if (delegates == null || delegates.Length == 0)
return null;
Delegate? d = delegates[0];
for (int i = 1; i < delegates.Length; i++)
d = Combine(d, delegates[i]);
return d;
}
Nullable ve Optional'ın Beraber KullanımıŞöyle yaparız.
public string MethodName(string str, int? x = null)
{
if(x != null)
{
....
}
}
Çağırmak için şöyle yaparız.MethodName("AValue",10); // str = AValue and x=10
Ya da şöyle yaparız.MethodName("AValue"); // str = AValue and x=null
Hiç yorum yok:
Yorum Gönder