gpt4 book ai didi

c# - 如何在 C# 中切换大小写许多变量(检查值是否为 null 或空)以替换 if-else-if 链

转载 作者:太空宇宙 更新时间:2023-11-03 22:59:06 24 4
gpt4 key购买 nike

如何在 C# 中对多个变量进行 Switch-Case(检查值是否为 null 或空)以替换巨大的 if-else-if 链 (+20 else-ifs)。我怎样才能用 Switch 语句替换我的代码的代码更少和更高效:

        con.Open();
SqlCommand cmd = new SqlCommand("usp_AddPublisher", con);
cmd.CommandText = "usp_AddPublisher";
cmd.CommandType = CommandType.StoredProcedure;
if (String.IsNullOrEmpty(data.Account_Num))
{
cmd.Parameters.AddWithValue("@AccountNum", "");
}
else
cmd.Parameters.AddWithValue("@AccountNum", data.Account_Num);
if (String.IsNullOrEmpty(data.publisher))
{
cmd.Parameters.AddWithValue("@publisher", "");
}
else
cmd.Parameters.AddWithValue("@publisher", data.publisher);
if (String.IsNullOrEmpty(data.addr1))
{
cmd.Parameters.AddWithValue("@addr1", "");
}
else
cmd.Parameters.AddWithValue("@addr1", data.addr1);

我试过了但是太长了:

  con.Open();
SqlCommand cmd = new SqlCommand("usp_AddPublisher", con);
cmd.CommandText = "usp_AddPublisher";
cmd.CommandType = CommandType.StoredProcedure;
switch (String.IsNullOrEmpty(data.Account_Num))
{
case true:
cmd.Parameters.AddWithValue("@AccountNum", "");
break;
case false:
cmd.Parameters.AddWithValue("@AccountNum", data.Account_Num);
break;

}
switch (String.IsNullOrEmpty(data.publisher))
{
case true:
cmd.Parameters.AddWithValue("@publisher", "");
break;
case false:
cmd.Parameters.AddWithValue("@publisher", data.publisher);
break;
}
switch (String.IsNullOrEmpty(data.addr1))
{
case true:
cmd.Parameters.AddWithValue("@addr1", "");
break;
case false:
cmd.Parameters.AddWithValue("@addr1", data.addr1);
break;
}

最佳答案

假设您所做的只是在字符串为 null 或空时使用 "" 作为值,您只是将 null 合并为 ""。所以就这样做:

cmd.Parameters.AddWithValue("@AccountNum", data.Account_Num ?? "")

如果您之前没有遇到过空合并运算符 ??,您可以阅读相关内容 in the documentation .

关于c# - 如何在 C# 中切换大小写许多变量(检查值是否为 null 或空)以替换 if-else-if 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44004002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com