📅  最后修改于: 2023-12-03 14:59:43.988000             🧑  作者: Mango
在C#中,我们可以声明一个泛型方法并为其中的参数赋予默认值。这意味着,当我们调用这个方法时,如果我们不指定一个值,则使用默认值。这在某些情况下可以简化代码,并使代码更易于阅读。
要声明带有默认值的泛型参数,请在类型参数名称后加上等于号和默认值。例如:
public void MyMethod<T = string>(T value)
{
// ...
}
在这个例子中,类型参数T默认为string类型。 这意味着,如果我们调用MyMethod(),而没有指定类型参数T的值,则它的类型将是string。
要使用带有默认值的泛型参数,请在调用方法时省略参数。例如:
MyMethod("hello"); // T的类型为string
在这个例子中,我们没有指定类型参数T的值。 值"hello"将被传递给MyMethod(),在MyMethod()内部,类型参数T将自动设置为string类型,因为这是默认值。
带有默认值的泛型参数适用于很多情况。它们可以使代码更简洁,更易于阅读。 但请注意,它们并不适用于所有情况。如果您的代码需要在编译时确定类型,请避免使用带有默认值的泛型参数。
为了更好地理解带有默认值的泛型参数,请查看以下示例:
public void MyMethod<T = string, U = int>(T value, U number)
{
Console.WriteLine("{0} is {1}", value, number);
}
// 调用MyMethod()时不指定类型参数
MyMethod("hello", 42); // 输出 "hello is 42"
MyMethod("world", ); // 使用int默认值,输出 "world is 0"
MyMethod(); // 使用string和int默认值,输出 " is 0"
在这个例子中,我们使用了两个带有默认值的泛型参数T和U。 第一个参数T默认为string类型,第二个参数U默认为int类型。 当我们调用MyMethod()时,我们可以指定所有参数、省略一些参数或者省略所有参数。 在三个调用中,所有参数都被传递,第二个调用中省略了U的值,使用了int的默认值,而第三个调用中省略了所有参数,使用了string和int的默认值。
带有默认值的泛型参数,可在任何时候使用,以简化代码并使代码更易于理解。 但是,请记住,它们并不适用于所有情况。 在某些情况下,您需要在编译时确定类型,因此请谨慎使用带有默认值的泛型参数。