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

时间:2009-05-09 13:53:18

标签: c# .net extension-methods

重复:

  

Post your extension goodies for C# .Net (codeplex.com/extensionoverflow)


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

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

1:String.FormatWith(...)

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

所以不必写

String.Format("Some text with placeholders: {0}, {1}", "Item 1", "Item 2");

你可以写

"Some text with placeholders: {0}, {1}".FormatWith("Item 1", "Item 2");

2:Object.To()

public static T To<T>(this object obj) {
    return (T) obj;
}

所以不必写

object o = 5; //integer as object
string value = ((int)o).ToString(); //get integer value as string
int number = (int) o;

你可以写

object o = 5; //integer as object
string value = o.To<int>().ToString();
int number = o.To<int>();

3:IEnumerable.Apply(Action action)

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

所以不必写

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

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

你可以写

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

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

0 个答案:

没有答案