Posts Tagged ‘Extension Methods’
Extension Methods
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
