我刚刚了解了对象初始值设定项,并且想知道何时使用它们的最佳实践是什么。
这是我读到的关于他们的内容:http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx它清楚地表明它们对于创建匿名类型是必要的,但我想知道在所有其他情况下我是否应该尝试使用它们而不是普通的构造函数。
我想知道在所有其他情况下我是否应该尝试使用它们而不是普通的构造函数。
我会说不。
构造函数有很多优势。使用构造函数,编译器将强制向您的类型提供所有必需的数据。这意味着您可以使您无法创建处于无效状态的类型实例,从而可以主动防止许多错误。
另一方面,对象初始值设定项会产生许多缺点。您必须为需要初始化的任何数据提供可公开设置的属性。在构建时不需要它们,因此您类型的用户可能会意外遗漏一些数据。
一般来说,任何事required为了让你的类正常工作,应该在构造函数中要求它。即使您有自定义构造函数,仍然可以使用对象初始值设定项,但只能用于类设置中可选的数据。在初始化中混合两者就可以了,这意味着你可以这样做:
var yourInst = new YourClass(req1, req2) { OptionalProperty = opt1 }
这可以帮助减少所需的构造函数重载的数量(类似于使用可选参数 http://msdn.microsoft.com/en-us/library/dd264739.aspx,但没有可选参数中版本控制的一些缺点)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)