Lazy

יום שלישי, יולי 2, 2013

קוד נפוץ יחסית הוא קוד בסגנון הבא: Code Snippet private string someValueFromConfig; public string SomeValueFromConfig {     get ...
תגיות: , ,
תגובה אחת

Add Flag and Remove Flag for enums

יום שלישי, אוגוסט 24, 2010

  הדרך הקלה לשימוש ב - Enums שמוגדרים עם Flags     כשקראתי את הפוסט של עידו על הפונקצייה החדשה של Enum בשם HasFlag לא הבנתי למה הם לא הוסיפו גם Add ו - Remove.   חיפוש קצר בגוגל הביא אותי לכאן והנה לנו שני Extensions חדשים לעבודה עם Enum.     namespace System {     public static class EnumExtension     {         public static T AddFlag<T>(this Enum type, T value)         {             return (T)(object)(((int)(object)type | (int)(object)value));         }           public static T RemoveFlag<T>(this Enum type, T value)         {             return (T)(object)(((int)(object)type & ~(int)(object)value));         }     } }   והשימוש פשוט ביותר     enum MyEnum {     A = 1,     B = 2,     C = 4 }     MyEnum...
3 תגובות

C# 4.0 – User Group

יום שלישי, אוקטובר 13, 2009

מי שלא היה בהרצאה ב - IDCC ולא מעוניין לשמוע את ההרצאה מההקלטה.   מוזמן לבוא ל - User Group שבוע הבא ב - 21 לאוקטובר.   החלק הראשון במפגש יועבר על ידי פבל ויתמקד ב - First Look at Visual Studio 2010   החלק השני יתמקד ב - First Look at C# 4.0 ויועבר על ידי.   אפשר להירשם כאן
תגיות: ,
אין תגובות

מה חדש ב – C# 4.0 – ההרצאה ב – IDCC

יום חמישי, אוגוסט 20, 2009

    ראיתי שהרבה חברה כתבו על IDCC (כדי שיצביעו להם כמובן) אז ארשה לעצמי גם לכתוב (כדי שתצביעו לי כמובן :)).   ההרצאה שלי (אם אבחר) תהיה על מה חדש ב - C# 4.0.   יהיו שם גם דברים שלא כתבתי בסדרת הפוסטים - כמו למשל:   אחד מהדברים שאי אפשר לעשות באצעות dynamic - זה לגשת ל - private של מחלקות. אנחנו כבר יודעים שמאחורי הקלעים כשכותבים dynamic למעשה הקומפייל מג'נרט קוד עם שימוש במחלקה בשם CSharpBinder, נניח שאנחנו יורשים מהמחלקה הזאת, וכותבים שם קוד שיאפשר לגשת בעזרת dynamic גם למה שמוגדר כ - private, נכון שהחיים שלנו יהיו הרבה יותר נפלאים, כי זה יהרוג את השימוש ב...
תגיות: , , ,
אין תגובות

C# 4.0 – Table Of Content

יום חמישי, יולי 2, 2009

  נראה לי שדי סיכמתי את החידושים ב - C# 4.0, אמנם יש עוד כמה חידושים אבל הם פחות מרכזיים אז חשבתי שכדאי לכתוב תוכן עניינים, ובמידה ויצא לי לכתוב על שאר החידושים אני אעדכן את הפוסט הזה.   אני מאוד מקווה שנהניתם מסדרת הפוסטים הזאת.     תוכן העניינים:   C# 4.0 Part 1 - First glance on the dynamic - בפרק זה נכיר לראשונה את המושג dynamic ונראה כמה דוגמאות פשוטות ושימושיות.   C# 4.0 Part 2 - The GetCalculator program - פרק זה ידגים גישה על ידי dynamic למחשבון שנכתב ב - net ומחשבון שנכתב ב - JS עטוף באובייקט COM.   C# 4.0 Part 3 - Behind The Scenes...
5 תגובות

C# 4.0 Part 12 – Covariance and Contravariance

יום רביעי, יולי 1, 2009

  המושג הזה הוא קצת וירטואלי למי שלא מכיר אותו, אז כדאי שנעבור על המושג לפני שנראה מה התחדש ב - C# 4.0.     ב - C# 2.0 יצא מושג חדש Covariance and Contravariance in Delegates    Covariance אומר את הדבר הבא: אפשר להגדיר delegate שמחזיר אובייקט ולתת מתודה שבפועל מחזירה מישהו שיורש ממנו, כלומר:       delegate object CovarianceDelegate();       static void Main()     {         CovarianceDelegate cd = CovarianceMethod;     }       static Person CovarianceMethod()     {       }   וזה הגיוני כי זה עומד בחוקי ה - Object Oriented (שאפשר לשלוח בן לאבא).     Contravariance אומר את הדבר הבא: אפשר להגדיר delegate שמקבל אובייקט ולתת מתודה שבפועל מקבלת את האבא, כלומר:       delegate...
תגיות: , , ,
אין תגובות

C# 4.0 Part 11 – Named Parameters

יום שני, יוני 29, 2009

  ל - Optional Parameters יש בעיה אחת קטנה.       static void Add(int id, string name = "shlomo", float age = 0)     {     }       static void Main()     {         Add(22, ,24);     }     זה לא מתקמפל וכמובן מאוד לא ברור. ולכן המציאו את ה - Name Parameters.       static void Main()     {         Add(22, age: 24);     }     גם עבור פרמטרים שהם חובה ניתן לשלוח עם השם:       static void Main()     {         Add(id: 22, age: 24);     }   זה גורם שהקוד שלנו יהיה יותר קריא. אבל צריך להיות זהירים עם השימוש ב - Named Parameters. (פוסט מומלץ לקריאה - כאן). החל מ - C# 4.0 אסור לשנות את...
3 תגובות

C# 4.0 Part 10 – Optional Parameters – Behind The Scenes

יום ראשון, יוני 28, 2009

  פספסתי את הפוסט של מוצאי שבת, (אולי אני אכתוב היום שניים).   בכל מקרה אנחנו רוצים לדעת מה קורה מאחורי הקלעים כשמשתמשים ב - Optional Parameters.   למעשה מייקרוסופט משתמשים בשני Attributes שקיימים כבר המון זמן. הראשון הוא - System.Runtime.InteropServices.OptionalAttribute והשני הוא - System.Runtime.InteropServices.DefaultParameterValueAttribute, למעשה הקוד הבא:       static void Add(int id, string name = "", float age = 0)     {     }   מתרנדר לקוד הבא:       static void Add(int id,                     string name,                     float age)     {     }   ולמעשה אפשר להשתמש עם ה - Attributes האלו לבד וזה יעבוד באותו צורה.   יותר מכך - כשמגדירים משתנה כלשהו לברירת...
2 תגובות

C# 4.0 Part 9 – Spell Checking with word using Optional Parameters

יום שישי, יוני 26, 2009

   כמו שהבטחתי אני רוצה להדגים שימוש ב - Optional Parameters.     הקוד הבא משתמש בבדיקת האיות של Word.         public static void Main()     {         Application word = new Application();           object missingValue = Type.Missing;                 Document doc = word.Documents.Add(ref missingValue, ref missingValue,                                         ref missingValue, ref missingValue);         doc.Activate();           SpellingSuggestions suggestions =             word.GetSpellingSuggestions("placa",                                 ref missingValue, ref missingValue,                                 ref missingValue, ref missingValue,                                 ref missingValue, ref missingValue,                    ...
3 תגובות

C# 4.0 Part 8 – First glance on the Optional Parameters

יום חמישי, יוני 25, 2009

  אחד מהתכונות החדשות של C# 4.0 היא Optional Parameters.   למעשה - המצב עד היום שלא היה לנו את האופציה של פרמטרי רשות, הרגיל אותנו לכתוב קוד לא כל כך נכון, למה הכוונה -  שימו לב לשני קטעי הקוד הבאים, הראשון - עושה overload למתודת Abs וקטע הקוד השני עושה overload למתודת Add. אז מה בכל זאת ההבדל ?        public static class Math     {         public static decimal Abs(decimal value);         public static double Abs(double value);         public static float Abs(float value);         public static int Abs(int value);         public static long Abs(long value);         public static sbyte Abs(sbyte value);         public static short Abs(short...
3 תגובות