ABA


"שאלה בקשר לindexers בc#"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15060 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15060
akoka

   18:18   19.11.08   
אל הפורום  
  שאלה בקשר לindexers בc#  
 
   ערכתי לאחרונה בתאריך 19.11.08 בשעה 18:42 בברכה, akoka
 
יש לי דבר כזה


private string this[string username]
{
set
{
if (username.Length < 3)
{
MessageBox.Show("שגיאה בשם משתמש");
}
}
}

עכשיו יש פונקציה כזאת


public void setLogin(string username, string password)
{
this[username] = username;
}

אני רוצה שנניח והmessegeBox באמת קופץ הפונקציה תעצור ,וreturn false בתוך הset זורק לי שגיאה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מבחינת תכנון נכון Sn00py  19.11.08 19:37 1
     למה? ב-C# אי אפשר לזרוק אקספשנים מכמה טיפוסים שונים ולתפוס אותם? ldan192  19.11.08 19:42 2
         לא הבנתי את השאלה Sn00py  19.11.08 19:45 3
             תתקן אותי אם אני טועה, אבל ברגע שאתה זורק ldan192  19.11.08 19:49 4
                 הוא ימשיך ל CATCH, ומשם ימשיך לאן שהיה אמור לולא Sn00py  19.11.08 22:05 6
             נכון... Nesher  19.11.08 19:50 5
                 delegates זה נושא מתסכל קצת:| akoka 20.11.08 10:24 7
                     ועשיתי את זה עם delegates אבל akoka 20.11.08 10:43 8
                         ברור ש GET ו SET Sn00py  20.11.08 14:35 9

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   19:37   19.11.08   
אל הפורום  
  1. מבחינת תכנון נכון  
בתגובה להודעה מספר 0
 
   אתה צריך לזרוק שם אקספשיון:
throw new Exception("Username error");
נניח, ולהיות מוכן לתפוס את זה במקום הרלוונטי עם try catch.

מבחינת בעיה, אתה לא יכול להחזיר false כי הפונקציה שלך מחזירה string.
אתה יכול לעשות אחרי ה messegebox להחזיר String.Empty:
return String.Empty; ואז לעשות בדיקה שאם חזרה מחרוזת ריקה זה אומר שהיתה בעיה ולפעול בהתאם.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   19:42   19.11.08   
אל הפורום  
  2. למה? ב-C# אי אפשר לזרוק אקספשנים מכמה טיפוסים שונים ולתפוס אותם?  
בתגובה להודעה מספר 1
 


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   19:45   19.11.08   
אל הפורום  
  3. לא הבנתי את השאלה  
בתגובה להודעה מספר 2
 
   אפשר לזרוק איזה אקספשן שבא לך ואפילו ליצור אחד משלך(לרשת ממחלקת exception).

מה שאמרתי שאו שהוא זורק אקספשן או שהוא מחזיר string.empty... הוא לא יכול להחזיר bool כאשר ה access modifier (הפונקצית SET ו-GET) מחזירה string... וזה לא אפשרי באף שפה.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   19:49   19.11.08   
אל הפורום  
  4. תתקן אותי אם אני טועה, אבל ברגע שאתה זורק  
בתגובה להודעה מספר 3
 
ערכתי לאחרונה בתאריך 19.11.08 בשעה 19:51 בברכה, ldan192
 
אקספשן ותופס אותו מחוץ לפונקציה האחרונה שהשתמשת בה, לא תמשיך את הקוד מייד אחרי ה-throw, כלומר - גם ככה אין לך מה להחזיר.

אבל אני מבין ממך שהוא חוזר בחזרה לשורה הבאה בקוד (מתחת ל-throw ברגע שמבצע את פקודת האקספשן)?
האמת היא שכבר הרבה זמן לא נגעתי באקספשנים אז אני חלוד ואולי סתם זכרוני מטעה בי, ואני פשוט הייתי ממשיך עם continue מיד אחרי שיתחיל את הלופ של try-catch מחדש כל פעם שהייתי זורק את האקספשן.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   22:05   19.11.08   
אל הפורום  
  6. הוא ימשיך ל CATCH, ומשם ימשיך לאן שהיה אמור לולא  
בתגובה להודעה מספר 4
 
   היה האקספשן עף.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   19:50   19.11.08   
אל הפורום  
  5. נכון...  
בתגובה להודעה מספר 3
 
ערכתי לאחרונה בתאריך 19.11.08 בשעה 19:51 בברכה, Nesher
 
מה שהייתי מציע זה להשתמש ב-Events ו-Delegates לצורך נושא זה
קל, פשוט ויעיל


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   10:24   20.11.08   
אל הפורום  
  7. delegates זה נושא מתסכל קצת:|  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

   10:43   20.11.08   
אל הפורום  
  8. ועשיתי את זה עם delegates אבל  
בתגובה להודעה מספר 7
 
   שאני חושב על זה ,אני אפילו לא צריך להשתמש בdelegates (בשביל האימון זה טוב)

delegates נועדו בעיקר כדי להעביר ריפרנס של פונקציות בין מחלקות ,כאן הכול נמצא במחלקה אחת ,פשוט חשבתי שיהיה נחמד להשתמש בget/set הזה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   14:35   20.11.08   
אל הפורום  
  9. ברור ש GET ו SET  
בתגובה להודעה מספר 8
 
   להשתמש במקרה שציינת בדלגייטס זה OVERKILL מטורף לחלוטין לדעתי :|

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net