我可以优化检查多个空值在c#
本文关键字:空值 优化 检查 我可以 | 更新日期: 2023-09-27 18:17:13
我有以下代码:
if (Session["CurrentUrl"] != null & Session["CurrentHost"] != null)
我在很多地方使用这个。我想知道是否有人能想到一种方法来优化c#代码,只是为了让事情更清楚。
这似乎是扩展方法的主要候选:
public static class SessionExtensions
{
public static bool HasHostAndUrl(this HttpSessionState session)
{
return session["CurrentUrl"] != null && session["CurrentHost"] != null;
}
}
然后:
if (Session.HasHostAndUrl()) { /* ... */ }
if (HostAndUrlExist()) {
...
}
public boolean HostAndUrlExist() {
return Session["CurrentUrl"] != null && Session["CurrentHost"] != null
}
创建一个返回true或false的方法
如果您有经常一起使用的会话变量组,请考虑将它们存储为一个对象,而不是作为一组基本类型。
你可以创建一个接受一个或多个字符串的方法,像这样:
public boolean SessionObjectsPresent(params string[] names) {
foreach (var name in names) {
if (Session[name] == null) return false
}
return true;
}
if (SessionObjectsPresent("CurrentHost", "CurrentUrl")) {
// ...
}
当您需要为其他事情测试会话时,这种方法的好处变得明显:
if (SessionObjectsPresent("CurrentUser", "LastEditTime")) {
// ...
}
有几个改进的方法,比如用一个有意义的名字抽象一个方法,或者提取一个接口ISession
以使其更易于单元测试。