PDA

View Full Version : سوال: توضيح اين کد return o == null



bftarane
چهارشنبه 14 فروردین 1392, 12:00 عصر
سلام.
لطفاً اين لينک رو ببينيد
http://stackoverflow.com/questions/9701649/c-dynamic-user-control-ispostback-returning-true-event-though-the-uc-is-loaded
تو اون قسمت که تيک سبز خورده اين خط

return o == null;
منظورم اون null== هست چه دليلي براي نوشتنش وجود داشته؟ به نظر من بود و نبودش فرقي نمي کنه.

aghayex
چهارشنبه 14 فروردین 1392, 12:15 عصر
چرا تاثیر نداره نوع پروپرتی شما از نوع bool هست و این یعنی این پروپرتی فقط مقادیر true یا false رو دریافت و یا ارسال می کنه و در قسمت get شما باید یه مقدار true یا false رو برگردونید حالا اومده یه شی تولید کرده و گفته اگه این شی برابر null بود مقدار true رو برگردون و در غیر این صورت مقدار false رو برگردون .

pcseven
چهارشنبه 14 فروردین 1392, 12:58 عصر
سلام.
لطفاً اين لينک رو ببينيد
http://stackoverflow.com/questions/9701649/c-dynamic-user-control-ispostback-returning-true-event-though-the-uc-is-loaded
تو اون قسمت که تيک سبز خورده اين خط

return o == null;
منظورم اون null== هست چه دليلي براي نوشتنش وجود داشته؟ به نظر من بود و نبودش فرقي نمي کنه.

IsUCPostBack یک Property است و چون بلاک get برای آن نوشته شده، الزاماً باید یک مقدار همنوع Property را برگرداند.
البته می شد دو خطی که در بلاک get آمده را بصورت زیر خلاصه نمود:

return ViewState["S2UC"]==null;

bftarane
چهارشنبه 14 فروردین 1392, 13:00 عصر
اجازه بديد من چيزي که مي فهمم از اين کد رو بگم شما ايراد من رو بگيد

خوب دفعه اول که صفحه مي خواد لود بشه مقدار ViewState طبيعتاً null هست.
خوب تو قسمت Get مياد اين مقدار null رو مي ريزه تو شي O
بعد در خط بعدي مياد شي O رو بر مي گردونه (که در واقع ميشه گفت داره null برمي گردونه)
حالا ميرسيم به null== که به قول شما داره ميگه اگه مساوي null هست مقدار true رو برگردون و در غیر این صورت مقدار false رو برگردون .
اين قسمت که Bold کردم رو نمي فهمم کجاي کد داره اين رو ميگه؟

.......................................
يه سوال ديگه هم دارم
اين قسمت Set که اومده True ريخته در ViewState باعث نميشه تا زماني که اين طوري
IsUCPostBack = false;مقدار flase به پراپرتي نداديم مقدار پراپرتي مون true باشه؟ (يعني اين جمله: خوب دفعه اول که صفحه مي خواد لود بشه مقدار ViewState طبيعتاً null هست. که در بالا نوشتم نقض بشه؟)

Mahmoud.Afrad
چهارشنبه 14 فروردین 1392, 13:26 عصر
در خط بعدي مياد شي O رو بر مي گردونهo برگشت داده نمیشه بلکه حاصل o == null بازگشت میشه.(که حاصلش از نوع بولین هست)

bftarane
چهارشنبه 14 فروردین 1392, 13:38 عصر
متوجه شدم. اگه اين
o == null برقرار باشه خوب نتيجه True و اگه برقرار نباشه نتيجه false هست که توسط Get اين true يا false برگشت داده ميشه.
...............
حالا ميشه سوال پايين رو جواب بديد

يه سوال ديگه هم دارم
اين قسمت Set که اومده True ريخته در ViewState باعث نميشه تا زماني که اين طوري 1
IsUCPostBack = false;



مقدار flase به پراپرتي نداديم مقدار پراپرتي مون true باشه؟ (يعني اين جمله: خوب دفعه اول که صفحه مي خواد لود بشه مقدار ViewState طبيعتاً null هست. که در بالا نوشتم نقض بشه؟)
بزاريد يه جور بهتر بپرسم سوالم رو
الآن شما اين کد رو ببينيد

private bool IsUCPostBack { get { object o = ViewState["S2UC"]; return o == null; } set { ViewState["S2UC"] = true; } }
مي گيد مقدار پراپرتي چيه؟ Ture يا false?

bftarane
چهارشنبه 14 فروردین 1392, 13:52 عصر
فکر کنم اينم متوجه شدم ببينيد درست مي گم؟
اول Get اتفاق مي افته پس مقدار بازگشتي پراپرتي بار اول که بهش دسترسي پيدا کنيم fasle هست، حالا بار دوم اگه مقدارش رو خودمون ست نکنيم مقدارش True خواهد بود يعني همون چيزي که در قسمت Set بهش اختصاص داده. درسته؟

Mahmoud.Afrad
چهارشنبه 14 فروردین 1392, 14:14 عصر
فکر کنم اينم متوجه شدم ببينيد درست مي گم؟
اول Get اتفاق مي افته پس مقدار بازگشتي پراپرتي بار اول که بهش دسترسي پيدا کنيم fasle هست، حالا بار دوم اگه مقدارش رو خودمون ست نکنيم مقدارش True خواهد بود يعني همون چيزي که در قسمت Set بهش اختصاص داده. درسته؟
کاملا برعکس
اگر o برابر null باشه IsUCPostBack برابر true خواهد بود و اگر null نباشه false.
باید ببینی چه زمانی o نال خواهد بود در همان زمان این پراپرتی true خواهد شد. پس تا زمانی که ویو ست نشده مقدار true هست.

bftarane
چهارشنبه 14 فروردین 1392, 14:27 عصر
کاملا برعکس
اگر o برابر null باشه IsUCPostBack برابر true خواهد بود و اگر null نباشه false.
بله حق با شماست. اشتباهي به جاي True نوشته بودم false.

ممنون از همه.