是否可以检查构造函数的参数是否存在某些约束,如果不满足则不创建对象并返回一个值来告诉它无法创建.
例如 .
Class Device { string id; Device(string ID) { If (ID.Length != 7) { //Do not create Object } id == ID; } }
在这里我只想要7个字符长的id字符串,而不是更少!如果它不是7个字符我不想创建对象是否可以这样做?
除了外部功能检查之外,我想不出任何解决方案,这是我想要远离的东西!
通常的方法是检查条件,如果不满足,则抛出异常.
另一种可能性是接受一个包含7个字符的数组,因此如果传递了其他内容,代码将无法编译.一般来说,这往往更难以工作(例如,如果某人传递了错误类型的对象,甚至类似于实际包含7个字符的字符串,它通常不会起作用).
一种中间点是创建一个专门用于保存7个字符的字符串的类型,如果长度错误则在其ctor中抛出异常.这可以提供更多的粒度,因此在抛出异常时更容易知道什么是错误的,并且Device
如果您传递一个有效的DeviceName
(或您喜欢的任何名称)对象,则确保创建对象将成功.