Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如果不为空,则使用会话值_C# - Fatal编程技术网

C#如果不为空,则使用会话值

C#如果不为空,则使用会话值,c#,C#,在C语言中,是否有一种编写以下代码的较短方法: var token = Session["token"]; if(token != null) { if((String)token != "") { var a = (String)token; } } 对于可能为null而不会导致异常的对象,是否存在与string.IsNullOrEmpty(Object.ToString())等效的值 编辑:显示实际代码,将变量名替换为“token”和“a”。var

在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。

如果您删除了冗余,那么您的代码开始时会简单得多:

object myObj = Session["value"];
if (myObj != null && myObj.ToString() != string.Empty)
string myStr = myObj.ToString();
var value = Session["value"];
if (value != null)
{
    string text = value.ToString();
    if (text != "")
    {
        // Use text
    }
}
这已经表示了每个逻辑操作一次,这很好

或者,您可以使用空合并运算符:

var text = (Session["value"] ?? "").ToString();
if (text != "")
{
    ...
}

如果您删除了冗余,那么您的代码一开始就会简单得多:

var value = Session["value"];
if (value != null)
{
    string text = value.ToString();
    if (text != "")
    {
        // Use text
    }
}
这已经表示了每个逻辑操作一次,这很好

或者,您可以使用空合并运算符:

var text = (Session["value"] ?? "").ToString();
if (text != "")
{
    ...
}
也许:

string value = Session["value"] as string ?? "";
// no need for an `if`
也许:

string value = Session["value"] as string ?? "";
// no need for an `if`
你试过了吗

if(!string.IsNullOrEmpty(Session["Value"]) as string)
{
      //do something
}

你试过了吗

if(!string.IsNullOrEmpty(Session["Value"]) as string)
{
      //do something
}


使用
as
转换为
字符串
以避免异常:

string text = Session["value"] as string;

if(!string.IsNullOrEmpty(text))
{
    var a = text;
}

使用
as
转换为
字符串
以避免异常:

string text = Session["value"] as string;

if(!string.IsNullOrEmpty(text))
{
    var a = text;
}
那么这个呢:

var candidate = Convert.ToString(Session["var"]);
if(candidate.Length > 0){
     DoSomething(candidate);

}
当返回
string.Empty
时,将处理转换,无论其实际类型是什么,如果值为
null

那么:

var candidate = Convert.ToString(Session["var"]);
if(candidate.Length > 0){
     DoSomething(candidate);

}
如果值为
null

就我个人而言,我会使用@JonSkeet的答案,在调用
ToString
-单行程序之前,使用带括号的
空合并运算符将语句解析为字符串

只是另一个无意义的选项:您可以将其压缩到扩展方法中,因为扩展方法调用在空“目标”上工作:

然后你可以打电话:

string a = Session["value"].SafeToString();

if (string.IsNullOrEmpty(a))
{
    // Handle null or empty strings.
}
不过,我不确定我是否会自己做这件事,因为null项方法调用工作起来似乎很奇怪——除非那个人记得扩展方法是如何编译的

此外,如果对名称空间不严格,扩展
object
确实会污染object的类型接口。

就我个人而言,我会使用@JonSkeet的答案,在调用
ToString
-单行程序之前,使用带括号的
空合并运算符将语句解析为字符串

只是另一个无意义的选项:您可以将其压缩到扩展方法中,因为扩展方法调用在空“目标”上工作:

然后你可以打电话:

string a = Session["value"].SafeToString();

if (string.IsNullOrEmpty(a))
{
    // Handle null or empty strings.
}
不过,我不确定我是否会自己做这件事,因为null项方法调用工作起来似乎很奇怪——除非那个人记得扩展方法是如何编译的



此外,如果您对名称空间不严格,扩展
对象
确实会污染对象的类型接口。

使用
string.IsNullOrEmpty((string)对象)
!使用
string.IsNullOrEmpty((string)对象)
!如果您知道为什么不应该,请告诉我。@Freeman
Session[“Value”]
是一个对象,而不是字符串-类型错误。以字符串的形式尝试
会话[“Value”]是否正确?除了我两次调用ToString方法之外,如果它不是空字符串,你不能使用
Convert.ToString(Session[“value”])
返回null,而不是抛出异常(?)当你不能以任何其他方式强制转换时,只使用Convert类,如果我不想抛出异常,我会使用'as'关键字。如果你知道为什么不应该抛出异常,请告诉我。@Freeman
Session[“Value”]
是一个对象,而不是字符串-类型错误。以字符串的形式尝试
会话[“Value”]是否正确?除了我两次调用ToString方法之外,如果它不是空字符串,你不能使用
Convert.ToString(Session[“value”])
返回null,而不是抛出异常(?)当你不能以任何其他方式强制转换时,只使用Convert类,如果我不想抛出异常,我会使用'as'关键字。
Session[]
的结果是一个对象,因此不能隐式转换为字符串,这将无法编译。请尝试将
Session[“”]设置为string
。抱歉,值得注意的是
设置为string
在语义上与
设置为string
(OP所要求的)不同,因此不太适合此解决方案
ToString
将适用于非空的非字符串项。@AdamHoudsworth:然后他可能要添加
value=value.ToString()
。另外,我相当肯定OP刚才使用了这个表达式
Session[“value”].ToString()
,尽管他实际上想要这个:
(String)Session[“value”]
。很多人都这样做。我认为它也应该告诉我们,在这一点上不可能有空引用。同意最后的答案。我使用了伪编码,因此我将根据具体情况进行更改。
Session[]
的结果是一个对象,因此不能隐式转换为字符串,这将无法编译。请尝试将
Session[“”]设置为string
。抱歉,值得注意的是
设置为string
在语义上与
设置为string
(OP所要求的)不同,因此不太适合此解决方案
ToString
将适用于非空的非字符串项。@AdamHoudsworth:然后他可能要添加
value=value.ToString()
。另外,我相当肯定OP刚才使用了这个表达式
Session[“value”].ToString()
,尽管他实际上想要这个:
(String)Session[“value”]
。很多人都这样做。我认为它也应该告诉我们,在这一点上不可能有空引用。同意最后的答案。我使用了伪编码,所以我会根据具体情况进行更改。@SteveB:对不起,如果会话[“值”]
的值不为空,并且它得到了一个非常糟糕的
ToString()
@ConradFrix的实现,那么与“
ToString()
相比较的打字错误可能会返回null