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

5

Програмування Asp.net
Попередній

Наступний

Нова і дуже корисна фіча – це розширені методи. Мені завжди не вистачало якогось методу в стандартному класі. Тепер я цей метод можу прикрутити до класу і при цьому не потрібно використовувати спадщину.

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

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

Code

string email = “[email protected]”;

if ( email.IsValidEmailAddress() ) {

}

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

Code

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

Після цього буде працювати, навіть буде працювати так:

Code

[email protected]” .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);

Непогано, правда?