|
|
1
25
如果你能利用
你会用它做什么?字符串是不可变的。 一些读者认为我是在说一个无参数的字符串构造函数将是无用的。我不是这个意思。我的意思是,从这样一个构造函数创建的空字符串在代码的其余部分将是无用的。 记住手术医生说他想做什么:
我不知道你能用什么
|
|
|
2
11
让我们回到基础部分,讨论引用和值类型。 当您创建一个int、long、point或其他类型时,值类型被分配到堆栈上——因此int在堆栈上保留4个字节,long是8个字节,依此类推。为值类型保留的堆栈空间为0'd out——不可能引用堆栈上的值类型地址并获取空值。因此,值类型上的默认构造函数可能更多地是由于堆栈分配的异常而不是有用性(也许ms的某个人可以提供更多的信息)。 无论如何,我认为system.string缺少默认构造函数,因为 糟糕的api设计 . 不可变对象(尤其是可枚举对象)几乎总是公开默认构造函数来实例化空集合。
我认为微软的初衷是好的:它
是
更好地使用
(谢谢微软,我很感谢你家长式的牵手,但我完全有能力照顾好自己。如果我不想创建同一个对象的多个实例,我会像缓存bagillion其他类型的默认构造函数一样缓存它。) 现在,您需要将没有默认构造函数的对象视为其他所有对象的特例。重写
作为两种方法:
代码的客户机应该决定为自己调用哪个函数。 现在有人看到上面的代码可能会问为什么要将构造函数而不是实际的对象传递到方法中,即。
可能有一些原因,例如不能保证调用构造函数方法。我使用了复杂的WinForm应用程序,单击按钮或菜单项会弹出一个表单——或者,如果表单已经打开,我们会将其作为焦点。所以我们有点像:
我们不能使用新的约束,因为有些表单有非默认的构造函数,所以上面的策略最终很好地解决了问题,并且避免了创建大量工厂类的麻烦。 |
|
|
3
4
我猜你想定义一个类,它是这样的:
我说的对吗?如果希望更灵活,以便允许可能没有默认无参数构造函数的类型,可以始终执行以下操作:
然后你可以创建一个
当然,如果你想提供一个默认的构造函数
尝试
使用无参数构造函数构造对象的步骤
上面的不适用
|
|
|
4
3
什么是没有实际字符串的字符串? 你可以这样做:
一旦有了字符串,就不能更改该特定字符串(strimgs是不可变的)。如果要声明空字符串,请执行以下操作:
|
|
5
1
因为它就是这样设计的。从这里的各种答案和意见中可以看出,对于无参数构造函数的需求或实现,甚至没有一个明确的共识。显然,在技术上有可能有一个默认构造函数初始化为
不同的是
当然,你不同意-你有一个特定的场景,你觉得用默认的ctor来实现它是最好的
E:为什么原始的痴迷?
我要写关于orms或其他映射程序的文章(我能想到的几个地方
|
|
|
6
1
具体解决如何避免
包括以下字段、属性和方法:
还包括类型的构造函数,该构造函数接受
无论你通常在哪里使用
|
|
|
7
1
这是泛型代码中常见的问题。C++用模板特化解决了这个问题,但是C不支持。
不过,用C语言是不可能干净利落的——你最好用
还有一个选择:
另一个:
|
|
|
8
0
所有空字符串都相同。为什么要创建一个?您可以使用string.empty或简单的“”。 |
|
|
9
0
从 http://msdn.microsoft.com/en-gb/library/system.string.aspx
所以一个无参数的构造函数是没有意义的。 |
|
|
10
-1
什么会
把你交出来
或
|
|
|
11
-1
int32是一个结构。结构总是有一个无参数的构造函数。这与它的实用性无关——即使微软认为Int32的无参数构造函数完全没有用处,他们也绝对无能为力。如果他们现在想改变结构的行为,那将是一个巨大的突破性的改变。将T32转换成一个类也是不可行的,因为.NET支持值和引用类型的原因(我从Java家伙那里听到,整型是一个类的事实引起了一些问题,但我不能对此进行评论)。 另一方面,string是一个类。对于类,您可以控制is是否具有无参数构造函数,因此在这里可以看到它是无用的并忽略它。 |