【发布时间】:2016-04-01 00:43:37
【问题描述】:
我希望这是一个简单的问题,只是我的大脑缺少最后一个链接。如果其他地方还有其他问答,请指点我那里并关闭它……但我在任何地方都找不到。
这里是要点:
我有一个带有可选参数的方法的类,类似于
public class Test
{
public void Method(string required, string someoptionalparameter="sometext", string anotheroptionalparameter="someothertext")
{
// do something here with the parameters
}
}
到目前为止,一切都很好。
现在,我将实例化该类并在我的代码中调用该方法:
...
Test.Method("RequiredString");
这将起作用。如果我提供可选参数,它仍然可以工作。
但是我如何处理一个我不知道是否实际提供了可选值的场景。比如:
...
Test.Method(requiredString,optionalString1,optionalString2);
...
如果我不知道 optionalString1 和 optionalString2 是否有值怎么办?然后我是否需要为每个场景编写一个覆盖,沿着......
if (optionalString1.isEmpty() && optionalString2.isEmpty())
{
Test.Method(requiredString);
}
else if ((!optionalString1.isEmpty() && optionalString2.isEmpty())
{
Test.Method(requiredString, optionalString1);
}
else if...
必须有另一种方式,我敢打赌这很简单,我只是有一个星期五......有没有类似......
Test.Method(requiredStrinig, if(!optionalString1.isEmpty())...
【问题讨论】:
-
参考this,因为它看起来与您的查询相似。
-
谢谢@fujiFX。我以前读过那本书,但并不完全如此。想象一下,我在表单中有一个供应商字段,它是可选的,但默认值为“MySupplier”。因此,如果我在没有供应商变量的情况下调用该方法,它将起作用并使用“MySupplier”填充数据库中的该字段。但是,如果没有填写供应商怎么办,我将“”传递给我的方法。然后它将用“”填充该字段,这是错误的。应该是“MySupplier”……这有意义吗?
-
IMO,如果您需要知道是否传递了默认值(调用中省略了该值),那么您不应该使用可选参数 - 它们用于有意义的默认值存在。
标签: c#