处理和比较可能为空的值c#

时间:2017-05-15 12:18:21

标签: c#

执行以下操作的更好方法是什么?以下将是有效的,但其很长的啰嗦和繁琐。 switch语句将为某些变量赋值,但不是全部。

        string status = null;
        string proceedure = null;
        string Type = null;
        string lastDonationDate = null;
        string actualStatus = _pageManager.BrowserDriver.FindElement(By.Id("ddd")).Text;
        string actualProceedure = _pageManager.BrowserDriver.FindElement(By.Id("dd")).Text;
        string actualType = _pageManager.BrowserDriver.FindElement(By.Id("ddd")).Text;
        string actualLastDonationDate = _pageManager.BrowserDriver.FindElement(By.Id("ddd")).Text;


        switch (campaign)
        {
            case "Newsletter":
                status = "Active";
                proceedure = "qweqwe";
                break;
            case "Famaily":
                break;
            case "Family":
                break;
            case "Priority Donor ":
                break;
            case "Birthday":
                break;
            case "Freshers":
                break;
            default:
                break;
        }
        if (status != null)
        {
//compare code here
        }
        if (proceedure != null)
        {

        }
        if (type != null)
        {

        }
        if (lastDonationDate != null)
        {

        }

2 个答案:

答案 0 :(得分:0)

您可以使用三元运算符?,如

status = (campign == "Newsletter") ? "Active" : null;

答案 1 :(得分:0)

??运算符

如果您尝试使用可能为零的值并且如果值确实为零则想要使用默认值,则可以使用??运算符。

此代码:

if (status != null)
{
    somethingElse = status;
} else {
    somethingElse = "Error";
}

可以简化为:

somethingElse = status ?? "Error";

?.运算符(C#6及以上)

如果您正在访问可能为null的值的成员,则可以使用?.

此代码:

if (status != null)
{
    status.SomeMethod();
}

可以简化为

status?.SomeMethod();
如果SomeMethod为空,则不会调用{p> status

显然你正在进行Assert.AreEqual电话。那么在这种情况下你可能会使用?.。您可以执行以下操作:

Assert.AreEqual(status?.Substring(0, 2), "Er");
如果status为null,

status?.Substring(0, 2)将评估为null,这将导致AssertFailedException。如果status为空,则不希望出现此异常,请尝试使用??

Assert.AreEqual((status ?? "Error").Substring(0, 2), "Er");

如果status为null,则断言将成功。