通常,您不能将 ObjectId 作为 C# 中的可选参数,因为 ObjectId 是一个没有“设计时间常数”默认值的结构。
ObjectId.Empty 是一个执行代码的属性,并且出于同样的原因不允许使用 default(ObjectId)。
有没有人有关于如何创建一个有效的设计时间常数的解决方案,以便以下语句起作用?(这不是真正的方法,而是一个例子)
MyObject LoadOrCreate(ObjectId id = somedefaultvalue)
{}
如果我在上面的任何例子中尝试这个,它不会编译?
我当然可以使用方法的单独重载,但我宁愿使用选项而不是重载。
正如我在对第一个答案的评论中指出的那样,可为空是一种选择,但由于必须强制转换为不可为空,我更喜欢不使用它。
所以我仍在寻找一些“更好”的解决方案;)