首页 新闻 搜索 专区 学院

DateTime.MaxValue不能作为函数参数默认值吗?

0
悬赏园豆:10 [已解决问题] 解决于 2010-08-04 17:32

public void test(DateTime t = DateTime.MaxValue, double w = double.MaxValue){}

第一个参数会提示出错,第二个则不会

ailove的主页 ailove | 菜鸟二级 | 园豆:382
提问于:2010-08-04 14:58
< >
分享
最佳答案
1

这是因为 参数 t 的默认值 必须是一个 编译时 常量(编译时就已经确定了的值);DataTime.MaxValue(MinValue) 都是 static readonly 类型的,不能做参数,它的值实在运行时才确定的;而 double.MaxValue(MinValue) 是一个编译时常量,可以做参数,它的值为:1.7976931348623157E+308(-1.7976931348623157E+308)。

收获园豆:10
HUHU慈悲 | 大侠五级 |园豆:9973 | 2010-08-04 15:40
嗯。static readonly类型的就不是编译时常量吗?
ailove | 园豆:382 (菜鸟二级) | 2010-08-04 17:31
不是的, 编译时常量在编译的时候就确定了,static 只是表示可以通过类型来访问,一个字段是否为常量,要看 是否是 const ;readonly 在运行时,在构造函数里面可以更改,在其他地方就不能改动了。
HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-08-05 10:53
其他回答(2)
0

你这是C#,还是C++?

C#中是不允许函数带默认参数的,也就是说 double w = double.MaxValue 也不行.

Launcher | 园豆:45045 (高人七级) | 2010-08-04 15:11
c#的,我在页面类写的时候的确显示不支持,但是在独立的程序集里面写是可以通过的
支持(0) 反对(0) ailove | 园豆:382 (菜鸟二级) | 2010-08-04 17:30
0

回Galactica,c# 4.0已经支持“Named and optional parameters”。

public StreamReader OpenTextFile(
string path,
Encoding encoding = null,
bool detectEncoding = true,
int bufferSize = 1024);

但是可选参数必须放在最后一个。

楼主的问题,首先只是个只读属性,再而按照楼上方法写。

Astar | 园豆:40805 (高人七级) | 2010-08-04 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册