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;
}
}
答案 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;