Extension Methods
ال C# 3.0 قدمت مفهوم ال Extensions Methods بحيث انك تقدر تمد type معين بميثودز جديدة بدون الحاجة لتغيير التعريف او الوراثة
اوكى الفكرة بتتلخص فى حاجتين
1- static
2- this
1- ال static (ال Extensions Methods) هى عبارة عن static methods فى static class
2- ال this بيكون فى اول بارمتر وبعدها التايب اللى هيتم مده
ابدأ ب
public static class Stringer { }
دا بقة ال static class اللى فيه الميثودز اللى هنضيفها لل string
الصيغة العامة للتعريف
</pre> public static meth_name(this type var_name[, arg0, ..., argN]){ }
عمل ميثود IsCapitalized لتشير هل السترينج دا بيبدأ بحرف Capital او لأ
public static bool IsCapitalized(this string somestring){ if (! string.IsNullOrEmpty(somestring) ){ return char.IsUpper(somestring[0]); }else{ return false; } }
لاجظ انها بتدى ريترن ب bool واول بارمتر هو string و this عشان نقدر نستخدمه كالتالى
“ “.IsCapitalized() ;
اللى هيحصل فى الفعل هو التحويل لل
Stringer.IsCapitalized( “ “ );
وبس كدا بكل بساطة!
ميثود IsTitle بيهمها ان كل اول حرف فى اى كلمة من جملة يكون Upper
if (! string.IsNullOrEmpty(somestring)){ string[] words=somestring.Split(' '); foreach(string w in words){ if (! w.IsCapitalized()){ return false; } } return true; }else{ return false; }
كدا نقدر نستخدمها كالتالى
“ “.IsTitle();
مام نعمل حاجة احيانا كتير بنستخدمها وهى اننا نسيف array من ال strings لفايل ما
string[]
بكل بساطة تقدر تعمل حاجة كالتالى
public static void SaveToFile(this string[] strings, string filename){ File.WriteAllLines(filename, strings);
التطبيق كالتالى
string s="Hello, world!"; Console.WriteLine("s.IsCapitalized() => {0}",s.IsCapitalized()); Console.WriteLine("s.IsTitle() => {0}", s.IsTitle()); string[] strings={"Hello1", "Hello2", "Hello3"}; strings.SaveToFile(@"c:\hiout");
وبس كدا
Refs:
C# 3.0 in a Nutshell, 3rd Edition
بورك فيك حبيبي احمد ..
واصل حبي ..
ولا تنسى Python 😀
Thanks BlackXHat for passing ^_^
shit man 😀
strings.SaveToFile(@”c:\hiout”);
nice 🙂
انا حبيت ابارك بس يا ابو حميد
واصل ابداعاتك يا كبير
اخوك محمد
Eh ya storm ht move ll C#?
@M: Allah ybarek feek w Thanks!
no i am talking about the idea it self
i am not against c# 😐
ممتازة بس هم لسه فاكرين يدعموها فى السى شارب؟
@St0rM: Mashy ya3m rbna ysahlo:)
@Lamia: valid point!
yeah yeah…
C# rocks :d
but python is cool