C#简化字符串数组初始化

时间:2016-10-18 16:14:26

标签: c# arrays

C#简化字符串数组初始化。有没有办法在C#

中优化以下代码
string[] createdBy = new string[totalRowCount];
for (long i = 0; i < totalRowCount; i++)
{
    createdBy[i] = userName;
}

另外

int?[] defaultInd = new int?[totalRowCount];
        for (long i = 0; i < totalRowCount; i++)
        {
            if (i == 0)
            {
                defaultInd[i] = 1;
            }
            else
            {
                defaultInd[i] = 0;
            }
        }

3 个答案:

答案 0 :(得分:3)

string[] myIntArray = Enumerable.Repeat(userName, totalRowCount).ToArray();

答案 1 :(得分:2)

您可以使用Enumerable.Range构建重复序列:

string[] createdBy = Enumerable.Range(0, totalRowCount)
    .Select(i => userName)
    .ToArray();
int?[] defaultInd = Enumerable.Range(0, totalRowCount)
    .Select(i => i==0 ? (int?)1 : 0)
    .ToArray();

注意第一个lambda表达式如何不使用索引i的值,因为所有元素都设置为相同的字符串。

答案 2 :(得分:1)

在两个示例中,没有很多方法可以简化for循环,除非您使用Enumeration.Range,如其他答案所示。但是,在第二个示例中,您可以使用三元运算符:

defaultInd[i] = i == 0 ? 1 : 0;