如果基本类型是对象,为什么我们不能这样做呢?

时间:2009-04-22 22:16:24

标签: c# .net

因此对于复杂类型,我们可以写:

return new MyType ( 5 );

但是为什么我们不能做类似的东西(为了一个对称):

return new int ( 5 );

return new Int64 ( 5 );

我知道只提供无参数构造函数。这是什么原因?

4 个答案:

答案 0 :(得分:11)

有什么意义?任何没有构造函数的.NET值类型都具有文字形式。如果它们没有文字形式,则无法提供将其类型作为参数的构造函数。

因为你有文字,所以提供一个带有该文字的构造函数是没有意义的。

没有文字,不可能
int i = new int(new int(new int(...)));
用文字
int i = new int(5); // What is the point? Would the constructor do *anything*
                    // besides int i = 5?

答案 1 :(得分:2)

部分设计是知道要遗漏什么。由于它没有增加价值,因此没有编码。

答案 2 :(得分:1)

只是这些类型只有默认构造函数。许多其他复杂的.net类型也只有一个默认的构造函数。我猜想没有参数化的原因是,正如其他答案所提到的那样,没有一个很好的理由。

答案 3 :(得分:0)

这可能听起来很奇怪,但你为什么要这样? - 复杂类型是有意义的,因为你使用1-n输入来获得结果但是int只返回一个int ...为什么呢?