C# 方法参数
形参与实参
信息可以作为参数传递给方法。参数在方法中充当变量。
它们在方法名称后的括号内指定。您可以添加多个参数,只需用逗号分隔即可。
下面的示例有一个方法,该方法将名为fname的string
字符串作为参数。
调用方法时,我们传递一个名字,该名字在方法内部用于打印全名:
实例
static void MyMethod(string fname)
{
Console.WriteLine(fname + " Refsnes");
}
static void Main(string[] args)
{
MyMethod("Liam");
MyMethod("Jenny");
MyMethod("Anja");
}
// Liam Refsnes
// Jenny Refsnes
// Anja Refsnes
当参数parameter被传递给方法时,它被称为实参(argument)。因此,从上面的例子来看:fname
是一个参数,而Liam
, Jenny
和 Anja
是实参。
默认参数值
也可以使用默认参数值,方法是使用等号(=
)。如果我们不带参数调用方法,它将使用默认值("Norway"):
实例
static void MyMethod(string country = "Norway")
{
Console.WriteLine(country);
}
static void Main(string[] args)
{
MyMethod("Sweden");
MyMethod("India");
MyMethod();
MyMethod("USA");
}
// Sweden
// India
// Norway
// USA
具有默认值的参数通常称为可选参数。在上面的例子中,country
是一个可选参数,"Norway"
是默认值。
多个参数
您可以有任意多个参数:
实例
static void MyMethod(string fname, int age)
{
Console.WriteLine(fname + " is " + age);
}
static void Main(string[] args)
{
MyMethod("Liam", 5);
MyMethod("Jenny", 8);
MyMethod("Anja", 31);
}
// Liam is 5
// Jenny is 8
// Anja is 31
请注意,使用多个参数时,方法调用的参数数必须与参数数相同,并且参数的传递顺序必须相同。
返回值
上面示例中使用的void
关键字表示该方法不应返回值。如果希望方法返回值,可以使用基本数据类型(如int
或double
)而不是void
,并在方法内使用return
关键字:
实例
static int MyMethod(int x)
{
return 5 + x;
}
static void Main(string[] args)
{
Console.WriteLine(MyMethod(3));
}
// 输出 8 (5 + 3)
此示例返回方法的两个参数之和:
实例
static int MyMethod(int x, int y)
{
return x + y;
}
static void Main(string[] args)
{
Console.WriteLine(MyMethod(5, 3));
}
// 输出 8 (5 + 3)
您还可以将结果存储在变量中(推荐,因为这样更易于读取和维护):
实例
static int MyMethod(int x, int y)
{
return x + y;
}
static void Main(string[] args)
{
int z = MyMethod(5, 3);
Console.WriteLine(z);
}
// 输出 8 (5 + 3)
命名参数
也可以使用 key: value
语法发送参数。
这样,参数的顺序就无关紧要了:
实例
static void MyMethod(string child1, string child2, string child3)
{
Console.WriteLine("The youngest child is: " + child3);
}
static void Main(string[] args)
{
MyMethod(child3: "John", child1: "Liam", child2: "Liam");
}
// 最小的孩子是: John
当您有多个具有默认值的参数时,命名参数尤其有用:
实例
static void MyMethod(string child1 = "Liam", string child2 = "Jenny", string child3 = "John")
{
Console.WriteLine(child3);
}
static void Main(string[] args)
{
MyMethod("child3");
}
// John