אופרטור ?? לא עובד
-
שלום אני עושה את הקוד הבא:
((d.Date ?? DateTime.Now) as DateTime).Year.ToString ()
כאשר d.Date הוא בעצם שדה שיכול להיות ריק, ובכל זאת יש לי את השגיאה הבאה:
Error 2 The as operator must be used with a reference type or nullable type ('System.DateTime' is a non-nullable value type)
האם יש למישהו ביאור??
פורסם במקור בפורום CODE613 ב17/02/2014 18:01 (+02:00)
-
מה הטיפוס של d אצלך?
כי אני עשיתי כך:static void Main(string[] args) { DateTime d; ((d.Date ?? DateTime.Now) as DateTime).Year.ToString(); }
והשגיאה שקיבלתי היא:
Operator '??' cannot be applied to operands of type 'System.DateTime' and 'System.DateTime'
ואם d אצלך הוא מטיפוס ?DateTime אין לטיפוס זה מאפיין Date.
פורסם במקור בפורום CODE613 ב17/02/2014 18:18 (+02:00)
-
-
לא כ"כ הבנתי מה רחמים פתר לך.
האופרטור ?? עובד רק על טיפוסים Nullable שזה כאלו עם סימן שאלה בסוף שם הטיפוס. אני מבין שהDate שלך הוא לא Nullable.
אז מה הפתרון שע"י הסתדרת?ורחמים, למה הבאת את הקוד עם מתודה זו: static void Main(string[] args)?
אם זה לצרכי בדיקה, אז אתה יכול להשמיט זאת מהקוד בפורום (לא לחיסכון אלא להדגשת נקודת הפתרון.פורסם במקור בפורום CODE613 ב18/02/2014 10:08 (+02:00)
-
@דוד ל.ט.
אני מבין שהDate שלך הוא לא Nullable.
הוא כן, זה שדה ב db שמאפשר ערכי null ולכן גם הייבוא שלו לפרוייקט הוא ככזה באופן אוטומטי.
ואינני באמת מבין למה אבל הקוד הזה:
((d.Date ?? DateTime.Now) as DateTime)
לא עובד
ואילו הקוד הזה שרחמים העלה:((DateTime)(d.Date ?? DateTime.Now))
כן עובד!! זה כנראה שתי צורות של הצהרה על סוג. אינני יודע. אשמח לשמוע אם מישהו מבין למה.
פורסם במקור בפורום CODE613 ב18/02/2014 13:21 (+02:00)
-
as ושם טיפוס בתוך סוגריים עגולים אלו שני סוגים של cast.
יש פה הסברים על זה.@דוד ל.ט.
ורחמים, למה הבאת את הקוד עם מתודה זו: static void Main(string[] args)?
אם זה לצרכי בדיקה, אז אתה יכול להשמיט זאת מהקוד בפורום (לא לחיסכון אלא להדגשת נקודת הפתרון.הבאתי את זה כדי שיהיה ברור מה עשיתי ושלא יחשבו שיש איזה קוד קודם או אחר כך, למשל ארכיטקט הביא שורה אחת של קוד בלבד ולא היה ברור מה זה הטיפוס של משתנה d שבשורה הזו ודבר זה גרם לי ולך אי בהירות עד ששנינו שאלו מה הטיפוס ואם הוא Nullable. ולכן אני אוהב להביא ושאחרים יביאו דברים שלמים.
פורסם במקור בפורום CODE613 ב18/02/2014 14:37 (+02:00)