我班上有这个:public delegate void OnTrue(String TestPassed);public event OnTrue OnTrueEvent;public delegate void OnFalse(String TestPassed);public event OnFalse OnFalseEvent;这是我的Do方法:public void Do(){ bool found=false; string p =""; // some actions found ? (OnTrueEvent != null ? OnTrueEvent(p): ;) :(OnFalseEvent != null ? OnFalseEvent(p): ;);}如果在行不起作用的问题。爆炸应该是这样的:if (found) if (OnFalseEvent != null) OnFalseEvent(p);else if (OnTrueEvent != null) OnTrueEvent(p);我想知道你在哪里错了,应该怎么纠正。
2 回答
白板的微信
TA贡献1883条经验 获得超3个赞
作为null检查的替代方法,您可以将字段分配为什么都不做:
public delegate void OnTrue(String TestPassed);
public event OnTrue OnTrueEvent = (item) => { }; // do nothing; not null
public delegate void OnFalse(String TestPassed);
public event OnFalse OnFalseEvent = (item) => { }; // do nothing; not null
...
public void Do() {
...
// No need to check for null here
if (found)
OnFalseEvent(p);
else
OnTrueEvent(p);
}
由于OnTrue和OnFalse是不同的类型,您不能将其作为
(found ? OnFalseEvent : OnTrueEvent)(p);
因为? :必须为两个分支返回相同的类型
- 2 回答
- 0 关注
- 324 浏览
添加回答
举报
0/150
提交
取消