通常情况下,您不能将ObjectId作为C#中的可选参数,因为ObjectId是一个没有"设计时间常数"默认值的结构。
ObjectId.Empty是一个执行代码的属性,由于同样的原因,不允许使用默认值(ObjectId)。
有人能解决如何创建一个工作设计时间常数的问题吗?(这不是真正的方法,而是一个例子)
MyObject LoadOrCreate(ObjectId id = somedefaultvalue)
{}
如果我在上面的例子中尝试这个,它不会编译吗?
我当然可以使用该方法的单独重载,但我宁愿使用选项而不是重载。
正如我在对第一个答案的评论中所指出的,可以为null是一个选项,但我不喜欢使用它,因为我不得不将其转换为不可以为null。
因此,我仍在寻找一些"更好"的解决方案;)
是否将其设为null并默认为null?
试试这个:
public static void SomeMethod(ObjectId id = default(ObjectId))
{
// do something
}