Новое в C# (часть 2)

Programming
Предыдущий Следующий

Новая и весьма полезная фича - это расширенные методы. Мне всегда не хватало какого то метода в стандартном классе. Теперь я этот метод могу прикрутить к классу и при этом не нужно использовать наследие.

Пару жизненных примеров. Например, проверка строки на соответствие шаблону. Будем проверять является ли строка e-mail адресом.

Хочу добиться вот такого:

Code

string email "email@my.com";

if 
( email.IsValidEmailAddress() ) {
   

}

Для этого создаю public static класс, а в нем public static метод, один из параметров какого будет расширяемый класс. Все запутано, но пример должен все объяснить:

Code

public static class MyClass
{
    
public static bool IsValidEmailAddress(this string s)
    {
        Regex regex 
= new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
        return 
regex.IsMatch(s);
    
}
}

После этого будет все работать, даже будет работать так:

Code

"my@email.com" .IsValidEmailAddress()

Теперь мы можем дополнять любой класс, и делать его таким как нам удобно.

На последок еще один пример:

Code

public static class MyClass
{
    
public static bool In(this object o, IEnumerable c)
    {
          foreach (object i in c)  {

                if  (i.Equales(o))  return true;
          
}

         return false;
}

Пример, работы с этим методом:

Code

string values { "Masha", "Petja", "Katja" };

bool isInArray  "Leonid".In(values);

Неплохо, правда?

Самостоятельный отпуск Опыт заказа вывоза мусора в Киеве Магія зміни: Від ночі до дня
Магія Вечірнього Неба: Відлякуйте втомленість дня і зануртеся у світ загадок і краси