我可以优化检查多个空值在c#

本文关键字:空值 优化 检查 我可以 | 更新日期: 2023-09-27 18:17:13

我有以下代码:

if (Session["CurrentUrl"] != null & Session["CurrentHost"] != null)

我在很多地方使用这个。我想知道是否有人能想到一种方法来优化c#代码,只是为了让事情更清楚。

我可以优化检查多个空值在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以使其更易于单元测试。