
09-11-2007, 11:07
|
 |
אדמין לשעבר
|
|
חבר מתאריך: 25.10.01
הודעות: 20,292
|
|
הטיפ שלך מבורך, אבל היות והפנית את האשכול הזה אלי, מנהל הפורום, אני מרשה לעצמי להגיב מעט על המסביב:- הטיפ שלך נכון. המשך התגובה שלי לא יטיל בזה דופי.
- ההודעה שלך מנוסחת בצורה נוראית. לא הצלחתי להבין אם הטיפ שלך זה לכתוב Equals או לבדוק את אורך המחרוזת. רק אחרי קריאה שלישית הבנתי מה אתה רוצה.
- אם אתה כבר כותב טיפ, כתוב גם למה זה ככה. תסביר מה Equals עושה מאחורי הקלעים שהופך אותה למעט פחות יעילה במקרה הספציפי הזה.
- חוצמזה, ההודעה שלך הייתה רלוונטית לCLR 1.0 ו 1.1, אבל ב.NET 2.0 יש את IsNullOrEmpty.
מ4 הסיבות האלו ההודעה שלך לא יכולה להפוך לעוגן בפורום הזה. אני לא בא לתקוף אותך חלילה. אני מאוד
מעריך אנשים שמשתפים מידע ולא רק שואלים בפורום. רק בגלל זה דרגתי את האשכול שלך יותר
מהממוצע. אבל.. להבא, כשאתה מפרסם טיפ - תנסה לעשות מעט מחקר מאחוריו.
ולגבי התשובה לסעיף 3-
הסיבה שEquals פחות יעילה במקרה הזה (במקרה של השוואת מחרוזת Null לדוגמא, Equals יחזיר תוצאה טובה יותר.. ולו מהסיבה שLength יזרוק Exception) היא שהיא משתמשת במנוע של EqualsHelper מאחורי הקלעים, שבאופן אירוני - קודם כל מבצע את בדיקת הLength, ורק אז ממשיך
לבדוק את התוכן. ההתניות האלו (כשהוא מגיע לבדוק את התוכן, הוא מיד יוצא כי האורך 0.. אבל הוא
מבצע המון בדיקות במסגרת התניות).
הסיבה שEquals יעיל יותר מסתם השוואה של מחרוזות אגב, זו העובדה שמאחורי הקלעים - הEqualsHelper עובד כunsafe ופונה ישירות למצביעים.
_____________________________________
דורון
|