C# C语法忽略参数,询问可能性
拥有C# C语法忽略参数,询问可能性,c#,syntax,parameters,optional-parameters,named-parameters,C#,Syntax,Parameters,Optional Parameters,Named Parameters,拥有 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)); } 我想使用name和city参数调用Search方法,以保持age的默认值 AFAIK参数应按名称引用 Search("Mahdi
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));
}
我想使用name和city参数调用Search方法,以保持age的默认值
AFAIK参数应按名称引用
Search("Mahdi", city: "Mashhad");
我想知道是否可以在不指定年龄值的情况下拨打电话,也不必按姓名拨打城市电话?我的意思是跳过一个参数,比如:
或
我在for循环中看到了几乎类似的行为
或者任何其他与大小写匹配的语法?只需创建一个包含两个字符串参数的字符串,如下所示:
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)
{
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");
可选参数在参数列表的末尾定义,
在任何需要的参数之后。
可以使用可为null的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");
这将使用年龄=21和城市=Tehran作为默认值。不,这是不可能的。for循环不接受任何参数-此行为与复制默认值不同,您可以调用Searchname,city:city@SergeyBerezovskiy我考虑过,但除非你也更改参数名,否则会导致无限递归。@p.s.w.g我认为编译器足够聪明,可以捕捉到这一点,它根本不进入递归。@MahdiTahsildari好吧,我在第一个重载中使用Searchname、city:city测试了这段代码,是的,它确实导致了递归。但是,如果您在第一个重载中更改city参数的名称,那么它可以正常工作。@p.s.w.g是的,您是对的-我没有注意到这里的self-call看起来不错,但是如果我们这样做,那么可选参数的意义是什么?如果所有参数都是非可选的,那么您必须始终提供所有三个参数。比如:SearchMahdi,null,null;不,我指的是理性的想法:有这种意义的辩论。在所有的答案中,这一个更符合逻辑,代码更少,一切都在它的位置上。谢谢。@MahdiTahsildari我只是因为我的英语水平而误解了它,我很高兴这对你有帮助。