C#数组内容声明中可能的lambda

时间:2012-09-05 09:50:03

标签: c# arrays function lambda

我有这样的代码:

    string suffix = "wallpapers\\";
    string extenstion = ".jpg";
    string[] wallpapers;

    .....
    void SetWallPapers()
    {
        wallpapers = new string[] {
            suffix + "1" + extenstion,
            suffix + "2" + extenstion,
            suffix + "3" + extenstion,
            suffix + "4" + extenstion,
        };
    }

是否有任何变体可以在数组内容中进行lambda-declaretion,如:

(伪代码,只有想法!)

wallpapers = new string[] { ( () => { for i = 1 till 4 -> suffix + i + extension; } ) }

有什么建议吗?

5 个答案:

答案 0 :(得分:1)

string[] wallpapers = Enumerable.Range(1, 4)
                                .Select(i => suffix + i + extenstion)
                                .ToArray();

答案 1 :(得分:0)

你可以像这样使用Linq:

wallpapers =
    Enumerable.Range(1, 4)
    .Select(i => String.Concat(suffix, i, extenstion))
    .ToArray();

答案 2 :(得分:0)

Enumerable.Range(1, 10).Select(a => "string" + a).ToArray();

答案 3 :(得分:0)

不,没有。如果您可以在运行时生成阵列,请使用

Enumerable.Range(1, 4).Select(i => string.Format("{0}{1}{2}", suffix, i, extension)).ToArray();

PS您的代码无论如何都无法使用,您无法将int添加到string

答案 4 :(得分:0)

string template = "wallpapers\\{0}.jpg";

string[] wallpapers =
    Enumerable.Range(1, 4)
        .Select(i => string.Format(template, i))
        .ToArray();