דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. אופרטור ?? לא עובד

אופרטור ?? לא עובד

מתוזמן נעוץ נעול הועבר ארכיון code613m
8 פוסטים 3 כותבים 503 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    ארכיטקט
    כתב ב נערך לאחרונה על ידי
    #1

    שלום אני עושה את הקוד הבא:

    ((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)

    אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

    תגובה 1 תגובה אחרונה
    0
    • רחמיםר מנותק
      רחמיםר מנותק
      רחמים מורחק
      כתב ב נערך לאחרונה על ידי
      #2

      מה הטיפוס של 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)

      תגובה 1 תגובה אחרונה
      0
      • א מנותק
        א מנותק
        ארכיטקט
        כתב ב נערך לאחרונה על ידי
        #3

        d הוא טבלה במסד הנתונים ו date זה שם של שדה, יש חשש שהוא עשוי להיות ריק.

        מה שאתה עשית זה משהו אחר לגמרי, הגדרת משתנה d מסוג תאריך שעה, ואילו date אמור להיות סוג של מאפיין בתוכו. אין קשר בין הדברים.

        פורסם במקור בפורום CODE613 ב17/02/2014 18:30 (+02:00)

        אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

        תגובה 1 תגובה אחרונה
        0
        • רחמיםר מנותק
          רחמיםר מנותק
          רחמים מורחק
          כתב ב נערך לאחרונה על ידי
          #4

          אז מה הבעיה תעשה כך:

          static void Main(string[] args)
                  {
                      DateTime? d = null;
                      ((DateTime)(d ?? DateTime.Now)).Year.ToString();
                  }
          

          פורסם במקור בפורום CODE613 ב17/02/2014 18:36 (+02:00)

          תגובה 1 תגובה אחרונה
          2
          • א מנותק
            א מנותק
            ארכיטקט
            כתב ב נערך לאחרונה על ידי
            #5

            תודה
            אני רואה שהחלדתי כהוגן בתחביר דוט נט, ואינני בוש בכך :lol: :lol: :lol: :lol: :lol:

            פורסם במקור בפורום CODE613 ב17/02/2014 18:43 (+02:00)

            אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

            תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              לא כ"כ הבנתי מה רחמים פתר לך.
              האופרטור ?? עובד רק על טיפוסים Nullable שזה כאלו עם סימן שאלה בסוף שם הטיפוס. אני מבין שהDate שלך הוא לא Nullable.
              אז מה הפתרון שע"י הסתדרת?

              ורחמים, למה הבאת את הקוד עם מתודה זו: static void Main(string[] args)?
              אם זה לצרכי בדיקה, אז אתה יכול להשמיט זאת מהקוד בפורום (לא לחיסכון אלא להדגשת נקודת הפתרון.

              פורסם במקור בפורום CODE613 ב18/02/2014 10:08 (+02:00)

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              1
              • א מנותק
                א מנותק
                ארכיטקט
                כתב ב נערך לאחרונה על ידי
                #7

                @דוד ל.ט.

                אני מבין שהDate שלך הוא לא Nullable.

                הוא כן, זה שדה ב db שמאפשר ערכי null ולכן גם הייבוא שלו לפרוייקט הוא ככזה באופן אוטומטי.

                ואינני באמת מבין למה אבל הקוד הזה:

                ((d.Date ?? DateTime.Now)  as DateTime)
                

                לא עובד
                ואילו הקוד הזה שרחמים העלה:

                ((DateTime)(d.Date ?? DateTime.Now))
                

                כן עובד!! זה כנראה שתי צורות של הצהרה על סוג. אינני יודע. אשמח לשמוע אם מישהו מבין למה.

                פורסם במקור בפורום CODE613 ב18/02/2014 13:21 (+02:00)

                אידיאולוגיות גדולות נכנסות למטחנה של עולם המעשה ויוצאות ממנו בפירורים (ווינסטון צ'רצ'יל, סתם סתם, זה שלי)

                תגובה 1 תגובה אחרונה
                1
                • רחמיםר מנותק
                  רחמיםר מנותק
                  רחמים מורחק
                  כתב ב נערך לאחרונה על ידי
                  #8

                  as ושם טיפוס בתוך סוגריים עגולים אלו שני סוגים של cast.
                  יש פה הסברים על זה.

                  @דוד ל.ט.

                  ורחמים, למה הבאת את הקוד עם מתודה זו: static void Main(string[] args)?
                  אם זה לצרכי בדיקה, אז אתה יכול להשמיט זאת מהקוד בפורום (לא לחיסכון אלא להדגשת נקודת הפתרון.

                  הבאתי את זה כדי שיהיה ברור מה עשיתי ושלא יחשבו שיש איזה קוד קודם או אחר כך, למשל ארכיטקט הביא שורה אחת של קוד בלבד ולא היה ברור מה זה הטיפוס של משתנה d שבשורה הזו ודבר זה גרם לי ולך אי בהירות עד ששנינו שאלו מה הטיפוס ואם הוא Nullable. ולכן אני אוהב להביא ושאחרים יביאו דברים שלמים.

                  פורסם במקור בפורום CODE613 ב18/02/2014 14:37 (+02:00)

                  תגובה 1 תגובה אחרונה
                  1

                  בא תתחבר לדף היומי!
                  • התחברות

                  • אין לך חשבון עדיין? הרשמה

                  • התחברו או הירשמו כדי לחפש.
                  • פוסט ראשון
                    פוסט אחרון
                  0
                  • דף הבית
                  • קטגוריות
                  • פוסטים אחרונים
                  • משתמשים
                  • חיפוש
                  • חוקי הפורום