Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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#,我有以下代码: if (question.DetailsJSON != null) { var details = JSON.FromJSONString<List<Question.Detail>>(question.DetailsJSON); } if(question.DetailsJSON!=null){ var details=JSON.FromJSONString(question.DetailsJSON); } 这是可行的,但在区块之外,细节不可用

我有以下代码:

if (question.DetailsJSON != null) {
   var details = JSON.FromJSONString<List<Question.Detail>>(question.DetailsJSON);
}
if(question.DetailsJSON!=null){
var details=JSON.FromJSONString(question.DetailsJSON);
}
这是可行的,但在区块之外,细节不可用


如果不预先声明details变量,是否有一种方法可以进行if测试,并且在if之外仍然有可用的详细信息?

您可以将声明和初始化结合起来,并使用条件运算符避免在if语句中引入新的作用域:

var details = question.DetailsJSON != null
?   JSON.FromJSONString<List<Question.Detail>>(question.DetailsJSON)
:   null;
var details=question.DetailsJSON!=无效的
?   FromJSONString(question.DetailsJSON)
:null;

您可以将声明和初始化结合起来,并使用条件运算符避免在
if
语句中引入新的作用域:

var details = question.DetailsJSON != null
?   JSON.FromJSONString<List<Question.Detail>>(question.DetailsJSON)
:   null;
var details=question.DetailsJSON!=无效的
?   FromJSONString(question.DetailsJSON)
:null;

请记住,在以后使用时,您仍然需要在详细信息上测试null。请记住,在以后使用时,您仍然需要在详细信息上测试null。