如何定义一个函数,以便可以有选择地传递struct参数,但又可以知道函数内部是否传递了struct参数?我要完成的工作类似于:
function SomeFunction(string str = null)
{
if (str == null) { ... }
}
不带参数调用上述函数将触发if (str == null)...
条件:
SomeFunction();
上面的方法不适用于struct类型的参数。给定以下结构:
public struct MyStruct
{
public int SomeInt;
public double SomeDouble;
}
这将产生一个错误,表明没有标准转换:
public function SomeFunction(MyStruct mystruct = null) { }
但是当我将函数定义为:
public function SomeFunction(MyStruct mystruct = default(MyStruct)) { }
并使用以下函数调用该函数:
SomeFunction();
进入函数时,mystruct
包含0SomeInt
和0.00 SomeDouble
。这些可能是合法值,这使我无法知道参数是实际传递给函数还是留空。
我如何定义此参数,以便如果在调用中未指定该参数,则可以在函数中检测到该参数?
使用可为null的类型(可以选择使用重载方法,如下所示DoSomething
),以检查是否传递了值。
public function SomeFunction(MyStruct? mystruct)
{
if(mystruct.HasValue)
DoSomething(mystruct.Value);
else
DoSomething();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句