您最喜欢的自定义扩展方法是什么?

6 .net c# extension-methods

重复:

发布您的扩展程序好东西C#.Net(codeplex.com/extensionoverflow)


让我们创建一个您最喜欢的扩展方法列表.要获得资格,它应该是您经常使用的扩展方法,并且通过优雅,聪明,强大或非常酷而使编码更容易.

我将从我最喜欢的3种扩展方法开始,我发现它们优雅并且一直使用(我省略了代码检查参数是否有效以保持简短):

1:String.FormatWith(...)

public static string FormatWith(this string text, params object[] values) {
    return String.Format(text, values);
}
Run Code Online (Sandbox Code Playgroud)

所以不必写

String.Format("Some text with placeholders: {0}, {1}", "Item 1", "Item 2");
Run Code Online (Sandbox Code Playgroud)

你可以写

"Some text with placeholders: {0}, {1}".FormatWith("Item 1", "Item 2");
Run Code Online (Sandbox Code Playgroud)

2:Object.To()

public static T To<T>(this object obj) {
    return (T) obj;
}
Run Code Online (Sandbox Code Playgroud)

所以不必写

object o = 5; //integer as object
string value = ((int)o).ToString(); //get integer value as string
int number = (int) o;
Run Code Online (Sandbox Code Playgroud)

你可以写

object o = 5; //integer as object
string value = o.To<int>().ToString();
int number = o.To<int>();
Run Code Online (Sandbox Code Playgroud)

3:IEnumerable.Apply(Action动作)

public static void Apply<T>(this IEnumerable<T> enumerable, Action<T> action) {
    foreach (T item in enumerable) action(item);
}
Run Code Online (Sandbox Code Playgroud)

所以不必写

private void PrintNumbers(int number) { Debug.WriteLine(number); }

int[] numbers = new []{ 1, 2, 3, 4, 5};
foreach (int number in numbers)
   WriteLine(number);
Run Code Online (Sandbox Code Playgroud)

你可以写

private void PrintNumbers(int number) { Debug.WriteLine(number); }

int[] numbers = new int[] { 1, 2, 3, 4, 5};
numbers.Apply(PrintNumbers)
Run Code Online (Sandbox Code Playgroud)