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

Dav*_*son 2 c# optional-parameters mongodb objectid

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

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

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

MyObject LoadOrCreate(ObjectId id = somedefaultvalue)
{}
Run Code Online (Sandbox Code Playgroud)

如果我用上面的例子尝试这个,它不会编译?

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

正如我在对第一个答案的评论中指出的,可为空是一个选项,但我宁愿不使用它,因为必须转换回不可为空。

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

小智 5

使其可为空并默认为空?