gpt4 book ai didi

C# 4.0 : Can I use a TimeSpan as an optional parameter with a default value?

转载 作者:IT王子 更新时间:2023-10-29 03:34:23 30 4
gpt4 key购买 nike

这两个都会产生一个错误,指出它们必须是编译时常量:

void Foo(TimeSpan span = TimeSpan.FromSeconds(2.0))
void Foo(TimeSpan span = new TimeSpan(2000))

首先,有人能解释一下为什么这些值不能在编译时确定吗?有没有办法为可选的 TimeSpan 对象指定默认值?

最佳答案

您可以通过更改签名轻松解决此问题。

void Foo(TimeSpan? span = null) {

if (span == null) { span = TimeSpan.FromSeconds(2); }

...

}

我应该详细说明 - 你的例子中的那些表达式不是编译时常量的原因是因为在编译时,编译器不能简单地执行 TimeSpan.FromSeconds(2.0) 并将结果的字节粘贴到你的编译代码中.

例如,考虑一下您是否尝试改用 DateTime.Now。 DateTime.Now 的值在每次执行时都会发生变化。或者假设 TimeSpan.FromSeconds 考虑了重力。这是一个荒谬的例子,但编译时常量的规则并不会造成特殊情况,只是因为我们碰巧知道 TimeSpan.FromSeconds 是确定性的。

关于C# 4.0 : Can I use a TimeSpan as an optional parameter with a default value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2168798/

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