gpt4 book ai didi

c# - 如何在没有编译时常量的情况下设置可选参数

转载 作者:可可西里 更新时间:2023-11-01 03:14:32 27 4
gpt4 key购买 nike

有没有办法写下面的C#方法:

public string Download(Encoding contentEncoding = null) {
defaultEncoding = contentEncoding ?? Encoding.UTF8;
// codes...
}

添加了默认参数,看起来像这样:

public string Download(Encoding contentEncoding = Encoding.UTF8) {
// codes...
}

不使用编译时常量?

最佳答案

简而言之。没有。

可选参数必须是编译时常量或值类型。

来自 Named and Optional Arguments (C# Programming Guide)在 MSDN 上:

Each optional parameter has a default value as part of its definition. If no argument is sent for that parameter, the default value is used. A default value must be one of the following types of expressions:

  • a constant expression;
  • an expression of the form new ValType(), where ValType is a value type, such as an enum or a struct;
  • an expression of the form default(ValType), where ValType is a value type.

你似乎想要实现的可以通过重载来实现:

public string Download()
{
return Download(Encoding.UTF8);
}

public string Download(Encoding contentEncoding)
{
defaultEncoding = contentEncoding ?? Encoding.UTF8;
// codes...
}

请注意,这与可选参数并不完全相同,因为默认值使用可选参数硬编码到调用者中(这就是存在对它们的限制的原因)。

关于c# - 如何在没有编译时常量的情况下设置可选参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14789439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com