📜  如何在 C# 中调用非尾随参数作为默认参数?(1)

📅  最后修改于: 2023-12-03 15:24:08.015000             🧑  作者: Mango

如何在 C# 中调用非尾随参数作为默认参数?

在 C# 中,我们经常会使用默认参数来简化方法调用。默认参数可以让我们避免在每次调用时都传递相同的参数值。但是,默认参数必须是尾随参数,也就是说,它必须出现在参数列表的最后。那么如何在 C# 中调用非尾随参数作为默认参数呢?

Method 1:使用命名参数

C# 允许我们使用命名参数来指定参数的名称,从而可以不按顺序传递参数。因此,我们可以使用命名参数来传递非尾随参数作为默认参数。例如:

public static void Print(string firstName, string lastName, int age = 30)
{
    Console.WriteLine($"My name is {firstName} {lastName}, and I am {age} years old.");
}

Print(lastName: "Doe", firstName: "John", age: 40);

在上面的示例中,我们使用命名参数来指定参数的名称和值,从而将非尾随参数传递给了默认参数。

Method 2:使用匿名类型

C# 中的匿名类型允许我们在运行时创建一个没有定义类型的对象。这意味着我们可以使用匿名类型来传递非尾随参数作为默认参数。例如:

public static void Print(string firstName, string lastName, object options = null)
{
    int age = 30;
    if (options != null)
    {
        dynamic opt = options;
        if (opt.Age != null)
        {
            age = opt.Age;
        }
    }

    Console.WriteLine($"My name is {firstName} {lastName}, and I am {age} years old.");
}

Print("John", "Doe", new { Age = 40 });

在上面的示例中,我们使用匿名类型来传递非尾随参数 Age,该参数将作为默认参数的值传递给了 Print 方法。注意,在 Print 方法中,我们使用 dynamic 类型来访问 options 对象,以便能够动态地获取其中的 Age 属性。

总结

在 C# 中,我们可以使用命名参数或匿名类型来传递非尾随参数作为默认参数。这些技巧可以让我们更灵活地使用默认参数,从而提高代码的可读性和可维护性。