Lan*_*her 5 c# generics lambda stringbuilder
在C#中,我正在尝试为StringBuilder构建一个名为AppendCollection()的扩展方法,它可以让我这样做:
var sb1 = new StringBuilder();
var sb2 = new StringBuilder();
var people = new List<Person>() { ...init people here... };
var orders = new List<Orders>() { ...init orders here... };
sb1.AppendCollection(people, p => p.ToString());
sb2.AppendCollection(orders, o => o.ToString());
string stringPeople = sb1.ToString();
string stringOrders = sb2.ToString();
Run Code Online (Sandbox Code Playgroud)
stringPeople最终会为列表中的每个人添加一行.每一行都是p.ToString()的结果.同样对于stringOrders.我不太清楚如何编写代码来使lambdas与泛型一起工作.
Meh*_*ari 10
使用Func<T,string>委托.
public static void AppendCollection<T>(this StringBuilder sb,
IEnumerable<T> collection, Func<T, string> method) {
foreach(T x in collection)
sb.AppendLine(method(x));
}
Run Code Online (Sandbox Code Playgroud)
public static void AppendCollection<T>(this StringBuilder builder, IEnumerable<T> list, Func<T,string> func)
{
foreach (var item in list)
{
builder.AppendLine(func(item));
}
}
Run Code Online (Sandbox Code Playgroud)
我不会返回一个字符串,我只是将它附加到传入的原始Stringbuilder中.
| 归档时间: |
|
| 查看次数: |
6236 次 |
| 最近记录: |