C# 使用会话值(如果不是空快捷方式)
本文关键字:快捷方式 如果不 会话 | 更新日期: 2023-09-27 17:56:13
C# 中是否有一种更短的方法来编写以下代码:
var token = Session["token"];
if(token != null)
{
if((String)token != "")
{
var a = (String)token;
}
}
对于可能为 null 而不导致异常的对象,是否有等效的 string.IsNullOrEmpty(Object.ToString())
?
编辑:显示实际代码,将变量名称替换为"token"和"a"。 var a 实际上是一个属性引用,但为了在将来的情况下有所帮助,保留为 var a。
好吧,如果你删除冗余,你的代码会更容易开始:
var value = Session["value"];
if (value != null)
{
string text = value.ToString();
if (text != "")
{
// Use text
}
}
这已经表达了一次每个逻辑操作,这很好。
或者,您可以使用空合并运算符:
var text = (Session["value"] ?? "").ToString();
if (text != "")
{
...
}
这个呢:
var candidate = Convert.ToString(Session["var"]);
if(candidate.Length > 0){
DoSomething(candidate);
}
Convert.ToString(Object) 将处理转换,无论它的实际类型是什么,同时返回string.Empty
如果值null
。
使用 as
强制转换为 string
以避免异常:
string text = Session["value"] as string;
if(!string.IsNullOrEmpty(text))
{
var a = text;
}
object myObj = Session["value"];
if (myObj != null && myObj.ToString() != string.Empty)
string myStr = myObj.ToString();
也许:
string value = Session["value"] as string ?? "";
// no need for an `if`
你试过吗?
if(!string.IsNullOrEmpty(Session["Value"]) as string)
{
//do something
}
或
var a = string.IsNullOrEmpty(Session["value"] as string) ? "" : Session["value"].ToString();
就个人而言,我会使用 @JonSkeet 的答案,使用带有括号的 ??
null 合并运算符将语句解析为字符串,然后再调用ToString
- 单行。
只是另一个毫无意义的选择:您可以将其压缩为扩展方法,因为扩展方法调用适用于空"目标":
public static class ObjectExtensions
{
public static string SafeToString(this object o)
{
if (o != null)
{
return o.ToString();
}
return "";
}
}
然后你可以打电话:
string a = Session["value"].SafeToString();
if (string.IsNullOrEmpty(a))
{
// Handle null or empty strings.
}
不确定我是否会自己这样做,因为空项目方法调用工作看起来很奇怪 - 除非那个人记得扩展方法是如何编译的。
此外,如果您不严格使用命名空间,扩展object
确实会污染对象的类型接口。