PDA

View Full Version : سوال: مقدار null به متغیری از جنس int



sadaf_
دوشنبه 30 آبان 1390, 13:38 عصر
با چه دستوری می شه به int مقدار null پاس داد؟

zarrinnegar
دوشنبه 30 آبان 1390, 13:42 عصر
این سوال تکراریه

متغیر رو اینجوری تعریف کن

int? d=null;

Amir Oveisi
دوشنبه 30 آبان 1390, 17:34 عصر
این سوال تکراریه

متغیر رو اینجوری تعریف کن

int? d=null;

لطفا توضیح بیشتری بدید. متغیر اینجوری چیه دقیقا؟ چه فرقی با int داره؟

پ.ن
(دقت کنید که وقتی جواب میدید تا جایی که امکان داره به جای ماهی دادن به اون کاربر؛ ماهی گیری بهش یاد بدید. این پرسش من هم در همین راستا هست)

Sp|R|T
دوشنبه 30 آبان 1390, 18:14 عصر
خب مگه صفر همون null نیس ؟ :دی

Amir Oveisi
دوشنبه 30 آبان 1390, 18:23 عصر
خیر صفر مقدار هست. اما null مقدار نیست. null‌ یعنی برای متغیر تعریف شده در حافظه فضایی اختصاص داده نشده. وقتی متغیری null هست چرا نمیشه بهش مقدار داد؟ و exception‌ رخ میده؟ به همین دلیل که هنوز تو حافظه جایی براش وجود نداره تا مقداری درش قرار بگیره.

Arash_janusV3
دوشنبه 30 آبان 1390, 18:29 عصر
با int? می توان مقدار null را به table در دیتابیس پاس داد و بتوان واژه null رو در فیلد مورد نظر مشاهده کرد
من از این روش استفاده می کنم و تا به حال مورد خاصی ندیدم

Amir Oveisi
دوشنبه 30 آبان 1390, 18:33 عصر
با int? می توان مقدار null را به table در دیتابیس پاس داد و بتوان واژه null رو در فیلد مورد نظر مشاهده کرد
من از این روش استفاده می کنم و تا به حال مورد خاصی ندیدم

?int چیست؟ چرا همه استفاده می کنید ولی اسمش رو نمیگید و در موردش توضیح نمیدید؟
آیا این کاری که گفتید تنها کاربرد ?int‌هست؟

Arash_janusV3
دوشنبه 30 آبان 1390, 18:38 عصر
راستش از نظر ماهیت این نوع متغیر خودم هم نمی دونم
اما قابلیت پذیری null رو داره و احتمالا باعث می شه متغیر رو از ثابت بودنش رها کنه یعنی صرفا برای int نیست
به نظرم قابلیت تبدیل متغیر به string یا bool و ... رو هم داره
این ها در حد نظرات باید بیشتر راجب اون تحقیق کنم

Mahmoud Zaad
دوشنبه 30 آبان 1390, 18:44 عصر
http://msdn.microsoft.com/en-us/library/2cf62fcy(v=vs.80).aspx

Amir Oveisi
دوشنبه 30 آبان 1390, 18:44 عصر
لطفا همین الان google‌ کنید و نتیجه ای رو که میگیرید همینجا بگید. (۱۰ دقیقه بیشتر طول نمی کشه)

zarrinnegar
سه شنبه 01 آذر 1390, 09:34 صبح
در آگوست سال 2000 ، شرکت مایکروسافت،و Hewlett-Packard و شرکت Intel به عنوان پشتیبان مشخصات سی شارپ را مانند CLI به سازمان استانداردسازی ECMA ارائه کردند.در دسامبر سال 2001 ، این سازمان ، ECMA-334 را با عنوان مشخصات زبان سی شارپ منتشر کرد.سی شارپ در سال 2003 به عنوان یک استاندارد ISO به ثبت رسید(ISO/IEC 23270).در سال 2002، ECMA دومین ویرایش از خصوصیات زبان سی شارپ را پذیرفت.

در ژوئن سال 2005 ، ECMA سومین ویرایش را با اضافه کردن مواردی همچون کلاسهای partial ، متدهای ناشناس ، انواع nullable و Genericها منتشر کرد. در جولای 2005، ECMA استانداردها و TRها را همراه با پردازش Fast-Track اخیر به ISO/IEC JTC پیشنهاد کرد.این روند معمولا 6 تا 9 ماه زمان میبرد. آخرین ویرایش این زبان در 19 نوامبر سال 2007 در قالب Framework3.5ارائه گردید

در این استاندار سازی روش تعریف متغیر های NULL پذیر به این صورت مشخص شد
System.Nullable<T> variable
-or-
T? variable

که حرف T نشان دهنده نوع متغیر میباشد.

sadaf_
پنج شنبه 03 آذر 1390, 15:19 عصر
بالاخره من نفهمیدم از int? استفاده کنم یا نه ؟

mmd2009
پنج شنبه 03 آذر 1390, 16:01 عصر
با سلام

برای این سوالی که پرسیدید بله استفاده کنید

فرضا کدی که توضیحاتش رو دوستان دادن رو میتونید به این صورت بنویسید :


Nullable<int> a = 20;


که این کد بالا هیچ فرقی نداره با کد زیر :


int? a = 20;


هر دو بازبینی کد به صورت یکسان عمل می کنند

یک مثال ساده :


int a = 20;

a = null;//Error Compile : Cannot convert null to 'int' because it is a non-nullable value type

int? b = 20;

b = null;// No Error

Nullable<int> c = 20;

c = null; // No Error


موفق باشید.

Farshid007
پنج شنبه 03 آذر 1390, 19:03 عصر
خیر صفر مقدار هست. اما null مقدار نیست. null‌ یعنی برای متغیر تعریف شده در حافظه فضایی اختصاص داده نشده. وقتی متغیری null هست چرا نمیشه بهش مقدار داد؟ و exception‌ رخ میده؟ به همین دلیل که هنوز تو حافظه جایی براش وجود نداره تا مقداری درش قرار بگیره.
یه سوال دارم :
وقتی ما متغیری رو مثلا به این شکل تعریف می کنیم ایا به اون فضایی تو حافظه اختصاص داده میشه یا نه؟

Amir Oveisi
پنج شنبه 03 آذر 1390, 19:44 عصر
به کدوم شکل منظوزتونه؟

zarrinnegar
پنج شنبه 03 آذر 1390, 22:00 عصر
یه سوال دارم :
وقتی ما متغیری رو مثلا به این شکل تعریف می کنیم ایا به اون فضایی تو حافظه اختصاص داده میشه یا نه؟

نه فضایی اختصاص داده نمیشه
اصلا مایکروسافتبخاطر اینکه نمیشد داده null وارد سیستم کرد این روش رو پیاده کرد چون کامپایلر وقتی میاد بررسی میکه که متغییری ساختی بعدش میره سراغ اینکه چیزی به اون assign شده یانه
مثلا شما یک متغیر تعریف کن بهش مقدار نده میبینی کامپایکر error میگیره میگه فضایی رو تسخیر کردی ولی استفاده نکردی ازش استفاده کن یا برش دار