当前位置: 首页 > 编程语言 > C#

我应该使用对象初始值设定项还是构造函数?Share

时间:2023-04-10 21:01:07 C#

我应该使用对象初始值设定项还是构造函数?我刚刚了解了对象初始值设定项,并且想知道何时使用它们的最佳实践是什么。这是我读到的关于它们的内容:http://msdn.microsoft.com/en-us/library/vstudio/bb384062.aspx它清楚地表明它们需要创建匿名类型,但我想知道我是否应该尝试更喜欢它们在所有其他情况下对普通构造函数。我想知道在所有其他情况下我是否应该尝试使用它们而不是普通构造函数。我会说不。构造函数有很多优点。使用构造函数,编译器会将所有必需的数据强制转换为您的类型。这意味着您不能创建处于无效状态的类型的实例,这使您可以主动防止许多错误。另一方面,对象初始值设定项有很多缺点。您必须为初始化所需的任何数据提供可公开设置的属性。它们在构造时不需要,因此您这种类型的用户可能会不小心错过一些数据。一般来说,你的类需要的任何操作都应该在构造函数中需要。即使你有一个自定义构造函数,你仍然可以使用对象初始化器,但你应该只将它们用于在类上设置时可选的数据。在初始化中混合使用两者很好,这意味着您可以这样做:varyourInst=newYourClass(req1,req2){OptionalProperty=opt1}可选参数中版本控制的缺点)。我相信你很困惑。对象初始值设定项将调用类的默认(或指定)构造函数!所以你不能真正使用对象初始值设定项而不是普通构造函数。因此,当使用对象初始值设定项时,无论如何都会调用构造函数。如果您想知道您正在设计的类的对象初始值设定项,答案仍然适用。确保提供有意义的必要构造函数。您不需要做任何特殊的事情来启用/允许对象初始值设定项。它们是C#编译器从3.0版开始提供的语法糖,允许类的用户在构造后立即初始化类的公共成员。一个好的经验法则是:初始化器的主要优点是您不必在创建对象时设置它们——您可以稍后根据其他逻辑设置它们。我目前在使用它们时看到以下问题:分配的属性必须是可更改的。这似乎是不可取的,因为如果数据被传递给构造函数,我可以在那里检查它,如果提供的数据不足或错误,则对象创建失败。如果可以使用属性分配数据,我突然不得不弄清楚我的对象的状态是什么,是否正确创建了所有内容,或者我可能处于其他状态。分配的属性必须是公共的。这意味着必须公开访问可能是私有的东西,然后通过使用接口或类似的东西来限制它。所以我的工作理论是:不要使用对象初始化器,它们会鼓励愚蠢的事情。C#学习教程就是这样:我应该使用对象初始值设定项还是构造函数?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: