下面是我实现的方法的简化示例.
public double[] CreateArray(double[] input)
{
var output = new double[10];
for (int i = 0; i < 10; ++i)
{
output[i] = input[i] * 3.14;
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
我有另一个用例,除了我想返回一个对象数组:
public Series[] CreateArray(double[] input)
{
var output = new Series[10];
for (int i = 0; i < 10; ++i)
{
output[i] = new Series(i, input[i] * 3.14);
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下都可以使它足够通用吗?
您可以创建一个方法,使用lambda 将double[]输入转换为某些输入T:
static T[] Convert<T>(IEnumerable<double> input, Func<double,T> converter) {
return input.Select(converter).ToArray();
}
static T[] Convert<T>(IEnumerable<double> input, Func<double,int,T> converter) {
return input.Select(converter).ToArray();
}
Run Code Online (Sandbox Code Playgroud)
像这样调用这个方法:
double[] res1 = Convert(input, d => d * 3.14);
Series[] res2 = Convert(input, (d, i) => new Series(i, input[i] * 3.14));
Run Code Online (Sandbox Code Playgroud)
请注意,由于转换是一行,您也可以Select直接使用:
double[] res1 = input.Select(d => d * 3.14).ToArray();
Series[] res2 = input.Select((d, i) => new Series(i, input[i] * 3.14)).ToArray();
Run Code Online (Sandbox Code Playgroud)
直接LINQ方法为您的用户提供"即时熟悉度",因为他们无需导航到您的Convert方法即可查看其功能.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |