PDA

View Full Version : چرا یکی null هست و اون یکی "" ؟



rahe behtari hast
شنبه 18 آذر 1391, 21:51 عصر
من یک متد دارم که دو تا ورودی داره
ورودی اولش متن داخل یک textbox هست
ورودی دومش هم گزینه انتخاب شده ی یک combobox
هر کدوم از این دو تا میتونه خالی هم باشه و در داخل متد اشکالی به وجود نمیاد

من برای صدا کردن متد این رو نوشتم:

method(textbox.text;combobox.selecteditem.tostring ())

اشکال اینجاست که وقتی combobox چیزی رو انتخاب نکرده خطای null میده.

سوال اولم اینه که برای رفع این مشکل چی کار کنم؟ توجه داشته باشید که داخل متند خالی بودن combobox اشکال نداره و میتونه ورودی دوم متد خالی باشه.

سوال دوم چرا وقتی یک textbox خالیه مقدار "" رو میفرسته اما وقتی یک combobox چیزی رو انتخاب نکرده مقدار null رو میفرسته؟

SHD.NET
شنبه 18 آذر 1391, 21:58 عصر
میتونی قبل کدت این کد رو اضافی کنی تا با مشکل مواجه نشی
if (combobox1.text == null) {
return;
}

:چشمک:\\\موفق باشید///:چشمک:

morteza271
شنبه 18 آذر 1391, 21:59 عصر
فکر کنم اگه متد رو اینطوری فراخوانی کنید درست میشه :
method(textbox.text;combobox.Text ())

و اما در مورد سوال دوم :
شما به کد خودتون دقت کنید، شما نوشتین combobox.selecteditem.tostring پس وقتی که هیچکدوم از آیتمهای کامبوباکس انتخاب نشده باشه مقدارش میشه null
ولی در تکست باکس وقتی متنی وارد نکنید مقدارش میشه "" یعنی خالی یا همون string.Empty

موفق باشید

مهرداد صفا
یک شنبه 19 آذر 1391, 17:17 عصر
سلام
برای مثال در این کد:

MessageBox.Show(comboBox1.SelectedIndex.ToString() );
با خطا مواجه میشویم چرا که در کامبو آیتمی انتخاب نشده است:
MessageBox.Show((comboBox1.SelectedItem == null).ToString());

با توجه به اینکه جعبه پیغام با مقدار null مشکلی ندارد:
MessageBox.Show(null);
و اینکه کد زیر بدون خطا اجرا میشود:
MessageBox.Show((string)comboBox1.SelectedIndex);
میتوان نتیجه گرفت که خطا در متود ToString اتفاق می افتد.
و دقت داشته باشید که رشته خالی با null تفاوت دارد و ممکن است شما در ComboBox یک آیتم داشته باشید که "" باشد:


comboBox1.Items.Add("");
comboBox1.SelectedIndex = 0;
MessageBox.Show(comboBox1.SelectedItem.ToString()) ;
که منطقی است چون null رشته ای نیست که خالی باشد یا نباشد.