我定义了函数
public void HogeFunc(Action<Bar> act)
{
this.act = act;
}
如果我打电话给HogeFunc,它就可以了。
if(isFuga)
{
hogeClass.HogeFunc(null);
}
else
{
hogeClass.HogeFunc(this.MyFunc);
}
但是,我想通过使用三元运算符来调用HogeFunc。
所以,我写的如下
try1
hogeClass.HogeFunc(isFuga ? null : this.MyFunc);
try2
hogeClass.HogeFunc((i)=>{return isFuga ? null : this.MyFunc;});
但是,没有工作......
你能告诉我怎么做吗?
答案 0 :(得分:1)
为了在C#中使用三元运算符,两个结果必须返回相同的对象类型。
尝试将null
投射到相同的返回类型this.MyFunc
答案 1 :(得分:1)
你的第一次尝试对我来说是正确的,但你也可以这样称呼:
isFuga ? hogeClass.HogeFunc(null) : hogeClass.HogeFunc(this.MyFunc);
答案 2 :(得分:0)
这很简单,你只是混合了三元操作的部分,你需要输入类型。
以下代码:
if(isFuga)
{
hogeClass.HogeFunc(null);
}
else
{
hogeClass.HogeFunc(this.MyFunc);
}
可以在这里改写:
hogeClass.HogeFunc(isFuge ? (Action<Bar>)null : (Action<Bar>)this.MyFunc);
或在这里:
hogeClass.HogeFunc(isFuge ? (Action<Bar>)null : (Action<Bar>)(x_bar =>
{
this.MyFunc(x_bar);
}));