有没有办法在C#中使用MongoDB ObjectId作为可选参数而不重载函数

有没有办法在C#中使用MongoDB ObjectId作为可选参数而不重载函数,c#,mongodb,optional-parameters,objectid,C#,Mongodb,Optional Parameters,Objectid,通常情况下,由于ObjectId是一个没有“设计时间常数”默认值的结构,因此不能在C#中使用ObjectId作为可选参数 Empty是一个执行代码的属性,出于同样的原因,不允许使用默认值(ObjectId) 对于如何创建工作设计时间常数以使以下语句能够工作,有人有解决方案吗?(这不是真正的方法,而是一个示例) 如果我在上面的任何例子中尝试这个,它将不会编译吗 我当然可以使用一个单独的重载方法,但我宁愿使用optionals而不是重载 正如我在对第一个答案的评论中所指出的,nullable是一个选

通常情况下,由于ObjectId是一个没有“设计时间常数”默认值的结构,因此不能在C#中使用ObjectId作为可选参数

Empty是一个执行代码的属性,出于同样的原因,不允许使用默认值(ObjectId)

对于如何创建工作设计时间常数以使以下语句能够工作,有人有解决方案吗?(这不是真正的方法,而是一个示例)

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

我当然可以使用一个单独的重载方法,但我宁愿使用optionals而不是重载

正如我在对第一个答案的评论中所指出的,nullable是一个选项,但我不喜欢使用它,因为我不得不将其转换为not nullable


因此,我仍在寻找一些“更好”的解决方案;)

使其可为null并默认为null?

尝试以下操作:

public static void SomeMethod(ObjectId id = default(ObjectId))
{
    // do something
}

想一想,但是我不喜欢默认情况下不是这样的空值,你总是不得不来回转换它们,但是是的,这是一个解决方案。它不是真正的转换,更多的是转换(调用静态
显式
操作符,它只调用
.Value
)。这对我来说似乎是合理的。。。
public static void SomeMethod(ObjectId id = default(ObjectId))
{
    // do something
}