可以使用具有限制条件的可选参数吗?

时间:2018-07-09 20:52:02

标签: c# optional-parameters

我想创建一个带有两个可选参数的函数,但是您只能选择两个可选参数之一。

例如:

... | Select-Object @{n='src_ip';e={$_.Name}}, @{n='Occurrences';e={$_.Count}} | ...

但是,如果有人这样做 public void DoThing (int foo = 0, string bar = "test") { if (foo != 0) // Do something with foo if (bar != "test") // Do something with bar } ,它将同时调用这两种状态,而我不想允许他们同时使用这两种状态。

是否可以强迫他们在编译代码之前解决此错误?

2 个答案:

答案 0 :(得分:2)

为什么不超载

public void DoThing (int foo) {
  // Do something with foo
}

public void DoThing (string bar) {
  // Do something with bar
}

public void DoThing (int foo, string bar) {
  // Do something with foo and bar
}

答案 1 :(得分:1)

可能会创建方法的两个重载

 public void DoThing (string bar, int foo = 0){
// code here
 }

 public void DoThing (int foo , string bar = "test"){
// code here
 }