<分区>
所以,我真的很喜欢使用扩展方法……也许有点太多了。所以,我要问一下我最近的享受,以确保我不会走得太远。
场景是我们有一个传入的 Guid?
变量。如果变量为 null 或 Guid.Empty
,那么我们想使用不同的 Guid。所以,我写了一个扩展方法让它读起来像英文:
internal static Guid OrIfEmpty(this Guid? guid, Guid other)
{
if (!guid.HasValue || guid.Value == Guid.Empty)
{
return other;
}
return guid.Value;
}
这自动意味着“null this”不会抛出异常。例如,这将起作用:
((Guid?)null).OrIfEmpty(other);
如果不使用扩展方法,这是不可能的,在我看来,这可能会产生误导。但是,它就是那么简洁干净!所以你怎么看?这是一件可以接受的事情,还是会让其他程序员感到困惑?
此外,我确信在其他情况下我会做这样的事情并检查 this
是否为 null,但这是我现在拥有的最好的例子。
注意:我并不是真的要问这个 Guid?
业务。我想问更多关于实现的整体模式(有一个扩展方法,其中 this
可以是 null
)