c#语法忽略参数,询问可能性

本文关键字:可能性 参数 语法 | 更新日期: 2023-09-27 17:50:23

public static void Search(string name, int age = 21, string city = "Tehran")
{
    MessageBox.Show(String.Format("Name = {0} - Age = {1} - City = {2}", 
        name, age, city));
}

我想使用名称和城市参数调用Search方法,以保持age的默认值。

AFAIK参数应该通过名称

来引用
Search("Mahdi", city: "Mashhad");

我想知道是否可以在不指定年龄值的情况下拨打电话,也不按姓名拨打城市?我指的是跳过一个参数,比如:

Search("Mahdi",,"Mashhad");

我在for loop

中看到了几乎类似的行为
for (int i = 0; ; i++) { some code; }

或任何其他匹配大小写的语法?

c#语法忽略参数,询问可能性

简单地创建一个重载,它接受如下两个字符串参数:

public static void Search(string name, string city)
{
    Search(name, 21, city);
}
public static void Search(string name, int age = 21, string city = "Tehran")
{
    MessageBox.Show(String.Format("Name = {0} - Age = {1} - City = {2}", 
        name, age, city));
}

然后这样命名:

Search("Mahdi", "Mashhad");

改为

public static void Search(string name, string city = "Tehran", int age = 21)
{
    MessageBox.Show(String.Format("Name = {0} - Age = {1} - City = {2}", 
        name, age, city));
}

现在你可以使用

Search("Mahdi", "Mashhad");

可选参数定义在参数列表的末尾,在任何必需的参数之后。http://msdn.microsoft.com/en-us/library/dd264739.aspx

您可以为age使用可空整型。这样的:

public static void Search(string name, int? age = null, string city = null)
{
    MessageBox.Show(String.Format("Name = {0} - Age = {1} - City = {2}", 
        name, age ?? 21, city ?? "Tehran"));
}

那么你可以调用以下组合:

Search("Mahdi");
Search("Mahdi", 20);
Search("Mahdi", null, "Cairo");

将使用age=21city="Tehran"作为默认值