“?”类型的值不能用作默认参数 | .net 6 与 .net 4.8

A value of type '?' cannot be used as a default parameter | .net 6 vs .net 4.8

这段代码用于 .net core 6 :

WebCallResult<AddressInfo> CreateAddress(
    string coin,
    string walletId,
    string label,
    int chain = 0,
    string gasPrice = default,
    bool lowPriority = false,
    CancellationToken cancellationToken = default(CancellationToken));

我想在.net framework 4.8中使用它。
在 .net Framework 4.8 中我有这个错误:

A value of type '?' cannot be used as a default parameter because there are no standard conversions to type 'string'

我该如何解决这个错误?


编辑:
此行发生错误:

string gasPrice = default,

问题在于,在 gasPrice = default 中,您正在为字符串设置 default,而在 default 定义为字符串,即字符串的值将是 ? 而不是像 null.

这样的可接受值

出于该特定原因(运行时版本),您必须设置 default(string) 或手动将值设置为 null。可以找到对所有默认值的引用 here.