有
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));
}
我想使用名称和城市参数调用搜索方法来保持年龄的默认值。
AFAIK参数应按名称引用
Search("Mahdi", city: "Mashhad");
我想知道是否可以在不指定年龄值的情况下拨打电话,也无需按姓名呼叫城市?我的意思是跳过一个参数,比如:
或
Search("Mahdi",,"Mashhad");
我发现for
循环
for (int i = 0; ; i++) { some code; }
或与案例匹配的任何其他语法?
答案 0 :(得分:4)
只需创建一个overload,其中包含两个字符串参数:
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");
答案 1 :(得分:2)
将其更改为
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
答案 2 :(得分:1)
您可以为age
使用可为空的int。像这样:
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=21
和city="Tehran"
作为默认值。