Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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#,我可以在try块之外使用下面代码中的“str”命名变量吗 我有点困惑 if () { try { String str; } catch { //exception } String result=str; // Will this work ??? It's inside of IF block only. } 否,您在try块中声明的任何内容只能在try块的范围内使用 访问在其他地方的try块中使用的变量的唯一方法是在try块之前声明它。否,在try块中声明的任何内容

我可以在try块之外使用下面代码中的“str”命名变量吗

我有点困惑

if ()
{
 try
 {
  String str;
 }
 catch
 {
  //exception
 }
 String result=str; // Will this work ??? It's inside of IF block only.
}

否,您在
try
块中声明的任何内容只能在
try
块的范围内使用


访问在其他地方的
try
块中使用的变量的唯一方法是在
try
块之前声明它。

否,在
try
块中声明的任何内容都只能在
try
块的范围内使用


访问在其他地方的
try
块中使用的变量的唯一方法是在
try
块之前声明它。

否。声明仅限于try块。您甚至不能在catch块中使用它。

否。该声明仅限于try块。您甚至不能在catch块中使用它。

假设您想要字符串result=str。。。不,它不会工作。

假设您想要字符串result=str。。。不,它不会工作。

如果在作用域块内声明变量(在
{}
内的任何内容),它只能在其中使用。

如果在作用域块内声明变量(在
{}
内的任何内容),它只能在其中使用。

我想你的问题是,你能否从try块外部引用try块中定义的变量。答案是否定的,但是您可以引用在try块外部定义并在try块内设置的变量,如下所示:

string myVar;

try
{
   myVar = "something";
}
catch {}

// now you can set otherVar to "something"
string otherVar = myVar;

我想你的问题是你能从try块外部引用try块中定义的变量吗。答案是否定的,但是您可以引用在try块外部定义并在try块内设置的变量,如下所示:

string myVar;

try
{
   myVar = "something";
}
catch {}

// now you can set otherVar to "something"
string otherVar = myVar;

否,在try{}块之外声明您的“str”。

否,在try{}块之外声明您的“str”。

始终在try-catch块之前声明变量,并将其初始化为null或默认值,以适用的为准

不管您是在try或catch中使用变量,还是在finally中使用变量,或者根本不使用变量。它将在将来为您节省麻烦,并将提高代码的可读性

public void processSomeRequest()
{

   string firstVariable = null;
   string secondVariable = null;
   int someInt = 0;

   try
   {
       // Initialise variables
       firstVariable = "test";
       secondVariable = "blah";

       // Process request code
   }
   catch(Exception e)
   {
       logException(e);
       throw;
   }

}

基本示例,但您从一开始就知道要使用什么。未使用的变量将突出显示

始终在try-catch块之前声明变量,并将其初始化为null或默认值(以适用的为准)

不管您是在try或catch中使用变量,还是在finally中使用变量,或者根本不使用变量。它将在将来为您节省麻烦,并将提高代码的可读性

public void processSomeRequest()
{

   string firstVariable = null;
   string secondVariable = null;
   int someInt = 0;

   try
   {
       // Initialise variables
       firstVariable = "test";
       secondVariable = "blah";

       // Process request code
   }
   catch(Exception e)
   {
       logException(e);
       throw;
   }

}

基本示例,但您从一开始就知道要使用什么。未使用的变量将突出显示

你需要比这更清楚一点。你没有太多的感觉,请阅读你的代码并修复它。您没有在任何地方声明
var
变量。
var
来自哪里?您的TRY部分中有
str
。我认为您的问题是错误的,最后一行应该是String result=str吗?您需要比这更清楚一点。你没有太多的感觉,请阅读你的代码并修复它。您没有在任何地方声明
var
变量。
var
来自哪里?您的试用区中有
str
。我认为您的问题是错误的,最后一行应该是String result=str吗?@user:因为您没有在其他地方使用
str
。@user:因为您没有在其他地方使用
str
。是的,它只是str。hv编辑了它…只是想知道为什么VS没有显示编译时错误是的,它只是str。hv编辑了它…只是想知道为什么VS没有显示编译时错误在尝试块之前声明??那么这些变量是否会超出try块的范围??那会怎么样..我的意思是使用一个变量..我需要声明它在块中..对吗?声明它..sry用于输入错误..sry用于哑注释..明白..thnxdeclare在尝试块之前??那么这些变量是否会超出try块的范围??我想使用一个变量我需要声明它在块里面对吗?声明它…为输入错误声明…为愚蠢的注释声明…明白了…thnx