如果我有这样的事情:When(x => x.SendMail.Equals("Y"), () =>{ RuleFor(x => x.To).NotEmpty(); RuleFor(x => x.From).NotEmpty(); RuleFor(x => x.EmailAddress).NotEmpty();});并且SendMail没有值,我会得到一个NullReferenceException。但是,如果我这样包围When():When(x => x.SendMail != null, () =>{ When(x => x.SendMail.Equals("Y"), () => { RuleFor(x => x.To).NotEmpty(); RuleFor(x => x.From).NotEmpty(); RuleFor(x => x.EmailAddress).NotEmpty(); });});它按我的预期工作,并且当SendMail没有值时我没有得到NRE。我是FluentValidaton和C#的新手。这是处理这样的验证的正确方法吗?我是否需要使用null检查包装所有此类逻辑? 最佳答案 最简单的操作就是切换比较。When(x => x.SendMail.Equals("Y"), () => // etc变成When(x => "Y".Equals(x.SendMail), () => // etc之所以有效,是因为“ Y”永远不会是null(因此,可以调用Equals方法,这是当前代码失败的地方),并且在Equals方法内部进行比较时,也不会抛出NRE作为值将仅返回null。关于c# - FluentValidation NullReferenceException-防止检查空值的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41988961/ 10-15 05:23