Цикл с известным числом повторений (найдено вконтакте)
public static class Extensions { public static void Times(this int subj, Action<int> obj) { if(obj!=null) for (int i = 0; i < subj; i++) obj(i); } }
Применение:
5.Times(x => { Console.WriteLine(x);/*x позволяет получить доступ к текущему значению итератора*/ });
Сокращенный вызов String.Format
public static string FormatFor(this string subj, params object[] obj) { return string.Format(subj, obj); }
Применение:
"Привет {0}, у меня есть {1} штук".FormatFor("Stranger", 8);
Добавление элемента в коллекцию с проверкой его уникальности для коллекции (List
public static void AddUnique<T>(this List<T> subj, T obj) { if (!subj.Contains(obj)) lock(subj)subj.Add(obj); }
Применение:
List<int> l = new List<int>(); l.AddUnique(5);//Добавит 5 в коллекцию, если та не содержит 5
Наукообразный вынос мозга, смысл не ясен, но можно извлечь пользу
namespace myBrainFuck { public static class TrollExtensions { public static void ExecAction<T>(this T subj, Action<T> action) { if(action!=null)action(subj); } } }
Подсказку можно получить из использования, интересен этот экстэншн тем, что позволяет использовать явно не объявленные переменные, если использовать этот сахар с умом, можно значительно улучшить удобочитаемость кода.
Применение:
new char[] { 'a', 'b', 'c' }.ExecAction(x => { for (int i = 0; i < x.Length; i++) Console.WriteLine(x[i]); });