c# – 如何设置可选参数,无需编译时常数

有没有办法写下面的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...
}

请注意,这与可选参数不完全相同,因为认值通过可选参数进行硬编码到调用者中(这就是为什么存在限制).

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...