2

通常,您不能将 ObjectId 作为 C# 中的可选参数,因为 ObjectId 是一个没有“设计时间常数”默认值的结构。

ObjectId.Empty 是一个执行代码的属性,并且出于同样的原因不允许使用 default(ObjectId)。

有没有人有关于如何创建一个有效的设计时间常数的解决方案,以便以下语句起作用?(这不是真正的方法,而是一个例子)

MyObject LoadOrCreate(ObjectId id = somedefaultvalue)
{}

如果我在上面的任何例子中尝试这个,它不会编译?

我当然可以使用方法的单独重载,但我宁愿使用选项而不是重载。

正如我在对第一个答案的评论中指出的那样,可为空是一种选择,但由于必须强制转换为不可为空,我更喜欢不使用它。

所以我仍在寻找一些“更好”的解决方案;)

4

2 回答 2

4

使其可空并默认为空?

于 2012-09-04T07:06:49.703 回答
4

试试这个:

public static void SomeMethod(ObjectId id = default(ObjectId))
{
    // do something
}
于 2012-09-06T03:07:17.103 回答