Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 声明一个固定的或;“不固定”;数组,用默认值填充_C#_Arrays_Visual Studio_Boolean_Declaration - Fatal编程技术网

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}; 但那是不可能的。。。我只想要一个简单的默认值数组,它有一个合理的大小。最佳做法是什么?您可以尝试定

假设我有这个数组,用C#:

如果我想扩展它,我必须更改数字并在末尾添加另一个布尔值:

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()