相关疑难解决方法(0)

const和readonly有什么区别?

是什么区别const,并readonly和你使用一个比其他?

.net c# const constants readonly

1269
推荐指数
19
解决办法
39万
查看次数

如何在C#中将参数默认为Guid.Empty?

我想说:

public void Problem(Guid optional = Guid.Empty)
{
}
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨Guid.Empty不是编译时常量.

由于我不想更改API,我无法使用:

 Nullable<Guid>
Run Code Online (Sandbox Code Playgroud)

c# optional-parameters c#-4.0

171
推荐指数
4
解决办法
7万
查看次数

C#4.0:我可以使用TimeSpan作为带有默认值的可选参数吗?

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

void Foo(TimeSpan span = TimeSpan.FromSeconds(2.0))
void Foo(TimeSpan span = new TimeSpan(2000))
Run Code Online (Sandbox Code Playgroud)

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

c# timespan default-value optional-parameters c#-4.0

118
推荐指数
6
解决办法
4万
查看次数

使用可选参数冲突重载方法

我有两个重载方法,一个带有可选参数.

void foo(string a)  { }  
void foo(string a, int b = 0) { }  
Run Code Online (Sandbox Code Playgroud)

现在我打电话给:

 foo("abc");
Run Code Online (Sandbox Code Playgroud)

有趣的是第一次重载被调用.为什么第二次重载的可选值设置为零?

说实话,我希望编译器带来一个错误,至少是一个警告,以避免无意中执行错误的方法.

这种行为的原因是什么?为什么C#团队以这种方式定义它?

parameters overloading optional-parameters c#-4.0

24
推荐指数
3
解决办法
6261
查看次数