C# 声明一个固定的或;“不固定”;数组,用默认值填充
假设我有这个数组,用C#: 如果我想扩展它,我必须更改数字并在末尾添加另一个布尔值:C# 声明一个固定的或;“不固定”;数组,用默认值填充,c#,arrays,visual-studio,boolean,declaration,C#,Arrays,Visual Studio,Boolean,Declaration,假设我有这个数组,用C#: 如果我想扩展它,我必须更改数字并在末尾添加另一个布尔值: public bool[] MyArrayName = new bool[4] { false, false, false, false }; 它可能会很快变得难以管理和非常难看的代码。 理想情况下,我想这样声明: public bool[] MyArrayName = new bool[] {false}; 但那是不可能的。。。我只想要一个简单的默认值数组,它有一个合理的大小。最佳做法是什么?您可以尝试定
public bool[] MyArrayName = new bool[4] { false, false, false, false };
它可能会很快变得难以管理和非常难看的代码。
理想情况下,我想这样声明:
public bool[] MyArrayName = new bool[] {false};
但那是不可能的。。。我只想要一个简单的默认值数组,它有一个合理的大小。最佳做法是什么?您可以尝试定义一个扩展类,以返回具有默认值的数组 如以下代码所示:
public static class Extend
{
public static T[] Arrwithdefault<T>(this T[] arr, T defaultvalue)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i] = defaultvalue;
}
return arr;
}
}
string[] arr1 = new string[3] ;
string value1 = "test1";
arr1 = Extend.Arrwithdefault<string>(arr1,value1);
for (int i = 0; i < arr1.Length; i++)
{
Console.WriteLine(arr1[i]);
}
Console.WriteLine("*************************");
bool[] arr2 = new bool[5];
bool value2 = false;
arr2 = Extend.Arrwithdefault<bool>(arr2, value2);
for (int i = 0; i < arr2.Length; i++)
{
Console.WriteLine(arr2[i]);
}
公共静态类扩展
{
公共静态T[]arrhithDefault(此T[]arr,T defaultvalue)
{
对于(int i=0;i
然后,我们可以在以下代码中调用该方法:
public static class Extend
{
public static T[] Arrwithdefault<T>(this T[] arr, T defaultvalue)
{
for (int i = 0; i < arr.Length; i++)
{
arr[i] = defaultvalue;
}
return arr;
}
}
string[] arr1 = new string[3] ;
string value1 = "test1";
arr1 = Extend.Arrwithdefault<string>(arr1,value1);
for (int i = 0; i < arr1.Length; i++)
{
Console.WriteLine(arr1[i]);
}
Console.WriteLine("*************************");
bool[] arr2 = new bool[5];
bool value2 = false;
arr2 = Extend.Arrwithdefault<bool>(arr2, value2);
for (int i = 0; i < arr2.Length; i++)
{
Console.WriteLine(arr2[i]);
}
string[]arr1=新字符串[3];
字符串value1=“test1”;
arr1=Extend.Arrwithdefault(arr1,value1);
for(int i=0;i
测试结果:
要声明具有默认值的布尔数组,不需要指定所有值。您的第一个示例可以编写为
public bool[]MyArrayName=new bool[3]代码>。仅当值不是默认值时,才需要指定这些值。当然,您需要指定大小-编译器需要知道数组的大小!谢谢这是有道理的,也是有效的。一个带有特定“默认”字符串的字符串数组怎么样?使用for循环的唯一方法是什么?如果要创建一个包含N个字符串S副本的字符串数组,可以使用Linq:string[]array=Enumerable.Repeat(S,N).ToArray()代码>