📜  c# 使用只读数组作为方法默认值 - C# (1)

📅  最后修改于: 2023-12-03 14:39:45.237000             🧑  作者: Mango

C# 使用只读数组作为方法默认值

C# 语言中,可以使用只读数组作为方法的默认值,为程序员带来了很多便利。

只读数组

只读数组是 C# 7.2 版本中引入的新功能,使用 readonly 关键字定义:

readonly int[] arr = {1, 2, 3};

只读数组有以下特点:

  • 可以定义时初始化,也可以在构造函数中初始化;
  • 只读数组的值在声明之后不能被更改;
  • 只读数组可以作为方法的参数类型或者返回值类型。
方法默认值

方法的默认值是指在调用方法时如果没有传递对应参数,那么就会使用默认值。方法默认值可以使用指定的表达式或常量在参数列表中定义。

void Method(int i = 0, string s = "default")
{
    //...方法体
}

在调用 Method 方法时,如果省略 is 参数,那么就会使用默认值 0default

只读数组作为方法默认值

只读数组可以作为方法的默认值,比如:

void Method(readonly int[] arr = null)
{
    //...方法体
}

在调用 Method 方法时,如果省略 arr 参数,那么就会使用 null 做为默认值。

注意,只读数组不能作为可选参数,因此需要显式指定 null 作为默认值。

示例
class Program
{
    static readonly int[] DefaultArr = { 1, 2, 3 };

    static void Main(string[] args)
    {
        Method(); //调用方法,使用默认值

        int[] arr = { 4, 5, 6 };
        Method(arr); //调用方法,传递数组参数
    }

    static void Method(readonly int[] arr = null)
    {
        if (arr == null)
        {
            arr = DefaultArr;
        }

        Console.WriteLine(string.Join(",", arr));
    }
}

输出结果为:

1,2,3
4,5,6
结论

C# 中使用只读数组作为方法默认值可以提高代码的可读性和易维护性。只读数组不可更改的特点保证了默认值的不变性,而新语法的使用也不会增加额外的开销或复杂度。