如何在 C# 中传递私有变量作为默认可选参数

Zac*_*h W 2 c# optional-parameters

在提供的示例中,函数声明PrintBar抛出错误,因为_bar不是编译时常量。避免此问题的最佳做法是什么?

using System;

class Foo
{
    private readonly string _bar;
    public Foo(string initBar)
    {
        _bar = initBar;
    }

    public void PrintBar(string value = _bar)
    {
        Console.WriteLine(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 5

我建议超载,尤其是。如果德米特里的解决方案(用作null默认值,然后在通过_bar时进行分配null)不是出路(当null可以很好地作为有效输入传递时):

public void PrintBar(string value)
{
    Console.WriteLine(value);
}

public void PrintBar() => PrintBar(_bar);
Run Code Online (Sandbox Code Playgroud)