گاهی اوقات ما متغیرهایی از نوع Numeric ، Bool ، DateTime داریم که علاوه بر مقادیر مناسبی که ممکنه بگیرن میتونن Null هم بگیرن. خوب همه شما میدونین که اگر کد زیر رو بنویسیم به ارور برمیخوریم:
Int32 myVar = null; //error: myVar cannot be set to null
این خطا به این دلیله که در حالت عادی این گونه متغیرها نمیتونن مقادریر Null بپذیرن. برای حل این مشکل میتونیم از System.Nullable استفاده کنیم که علاوه بر مقدیر مناسب Datatype میشه Null رو هم بهش نسبت داد.شکل کلی تعریف یک متغیر به صورت Nullable به دوصورت زیر است:
Nullable<T> myVar = null;
T? myVar = null;
Nullable<Int32> myVar = null;
Int32? myVar = null;
// ?? operator example.
int? x = null;
// y = x, unless x is null, in which case y = -1.
int y = x ?? -1;
چند مثال:
System.Nullable<int> i1 = 0;
System.Nullable<int> i2 = null;
int i3 = 0;
if (i1 == i2)
}
خروجی قطعه کد بالا بصورت زیر هست:
i1 and i2 are different
i1 and i3 are the same
مثال 2:
System.Nullable<int> i1 = null;
try
{
System.Console.WriteLine("The value is {0}", i1.Value);
}
catch
{
System.Console.WriteLine("null causes an exception");
}
i1 = 1;
try
{
System.Console.WriteLine("The value is {0}", i1.Value);
}
catch
{
System.Console.WriteLine("1 causes an exception");
}
null causes an exception
The value is 1
int DefaultIfNull(System.Nullable<int> i)
{
int retVal;
if (i.HasValue)
{
retVal = i;
}
else
{
retVal = 1;
}
return retVal;
}
int DefaultIfNull(System.Nullable<int> i)
{
return i ?? 10;
}
مثال 4: پارامتر نال پذیر:
private void button1_Click(object sender, EventArgs e)
{
bool b=true;
b = nima(null);
MessageBox.Show(b.ToString());
b = nima(2);
MessageBox.Show(b.ToString());
}
private bool nima(int? i)
{
if (i == null)
return false;
else
return true;
}
نکته 1: از نوع string نمیشه در متغیرهای نال پذیر استفاده کرد چون استرینگ یک رفرنس هست به رشته ای از کاراکترها
نکته 2: یکی از بهترین استفاده های این متغیرها وقتی است که شما میخواین از ستونی در جدولتون اطلاعات بخونین که میتونه مثادیر نال داشته باشه.
سلام مهندس
پاسخ دادنحذفخسته نباشید
من کتاب آموزش sql 2005
شما رو دانلود کردم ولی اینطور که بنظر میرسه
باید ناقص باشه چون 10 تا کتاب pdf
هستش که آخر کتاب در مورد فصل بعد هم گفتین ولی من هرجا گشتم فقط این 10 تا کتاب بود
ممنون میشم راهنمایی کنید که بقیه کتاب رو از کجا بگیرم
email man = poozhan@yahoo.com
راستی باید از شما تشکر کنم برای توضیح بسیار عالی و دقیق
خدانگهدار
منتظر جوابتون هستم
سلام
پاسخ دادنحذفحتما تو فکرم هست که بذارمشون یکم سرم شلوغه اما تو فکرش هستم .موفق باشید