C# 为什么不允许在if括号内使用此字符串?
这可能是一个愚蠢的问题,有一个简单的解决方案,但我不明白为什么它不允许我在if括号内使用字符串“datatxt”。它说,“名称‘datatxt’在当前上下文中不存在”。欢迎任何帮助C# 为什么不允许在if括号内使用此字符串?,c#,visual-studio,C#,Visual Studio,这可能是一个愚蠢的问题,有一个简单的解决方案,但我不明白为什么它不允许我在if括号内使用字符串“datatxt”。它说,“名称‘datatxt’在当前上下文中不存在”。欢迎任何帮助 try { StreamReader sr = new StreamReader("Data.txt"); String datatxt = sr.ReadLine(); } catch (Ex
try
{
StreamReader sr = new StreamReader("Data.txt");
String datatxt = sr.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("An error har occured: '{0}'", ex);
}
if (UserBox.Text.Equals(user) && PassBox.Text.Equals(data + datatxt))
{
Main s = new Main();
s.Show();
this.Hide();
变量
datatxt
在try
块中声明,因此只能在该块中引用
如果要在
try
块之外使用它,请在try
之前声明它,因为datatxt
是在try
语句中创建的。尝试在Try
语句外部声明变量,并在Try
语句内部赋值。e、 g
string datatxt;
try
{
StreamReader sr = new StreamReader("Data.txt");
datatxt = sr.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("An error har occured: '{0}'", ex);
}
if (UserBox.Text.Equals(user) && PassBox.Text.Equals(data + datatxt))
{
Main s = new Main();
ss.Show();
this.Hide();
}
另外,如果将if
station放在try
中,则更有意义,这样在出现异常时就不会发生异常
e、 g
在try块中声明的变量只能在try块中使用。如果需要在try块中使用变量集,则必须在try块外部声明该变量集,然后在try块内部设置该值。If子句的位置也没有多大意义。将if块移动到try块中,并在try中定义
dataText
,这样做更有意义。我已经包括了两种方式
String dataText;
try
{
StreamReader sr = new StreamReader("Data.txt");
datatxt = sr.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("An error har occured: '{0}'", ex);
}
if (UserBox.Text.Equals(user) && PassBox.Text.Equals(data + datatxt))
{
Main s = new Main();
s.Show();
this.Hide();
}
或
您可以保留字符串dataText如果要再次使用该变量,请在try块上方使用code>
补充阅读:
在C#(或NET)参考中搜索变量范围:在try块中声明的变量不能在其外部使用。谢谢!这很有道理,而且似乎是正确的做法。
String dataText;
try
{
StreamReader sr = new StreamReader("Data.txt");
datatxt = sr.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine("An error har occured: '{0}'", ex);
}
if (UserBox.Text.Equals(user) && PassBox.Text.Equals(data + datatxt))
{
Main s = new Main();
s.Show();
this.Hide();
}
try
{
StreamReader sr = new StreamReader("Data.txt");
String datatxt = sr.ReadLine();
if (UserBox.Text.Equals(user) && PassBox.Text.Equals(data + datatxt))
{
Main s = new Main();
s.Show();
this.Hide();
}
}
catch (Exception ex)
{
Console.WriteLine("An error har occured: '{0}'", ex);
}