为什么我必须在方法内初始化变量?
int test1; // Not initialized, but ok
public int Foo()
{
int test2; // Not initialized
int test3 = test1; // Ok
int test4 = test2; // An error
}
Run Code Online (Sandbox Code Playgroud) 快速问题,当它没有携带正值或负值时,初始化所有"空白或空"变量是一种好习惯,例如使用:
int value = 0;
Run Code Online (Sandbox Code Playgroud)
代替:
int value;
Run Code Online (Sandbox Code Playgroud)
我接受Visual Studio编译器,根据我的理解,默认情况下,如果未事先初始化变量,则会自动将变量初始化为0,但我很好奇最佳实践是什么以及潜在危险(如果有的话)是什么.
虽然我特别指的是VS环境中的C#和C++语言,但这个问题对所有语言和编译器都是开放的.
对于一个类,这没关系:
class Point
{
private int _x, _y;
public Point(int x)
{
_x = x;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用值类型,编译器会抱怨_y未初始化:
struct Point
{
private int _x, _y;
public Point(int x)
{
_x = x;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道这背后的理由是什么?为什么不能编译器只是初始化_y到0时候有没有提供明确的构造,因为它呢?
我正在使用Windows窗体应用程序.我有三个按钮.我写了计算每个按钮的新位置的方法.但我有一些错误(代码后解释).方法是:
Random random = new Random();
public int SetPointLocation()
{
int x1 = x2 - 20;
int x2;
int x3 = x2 + 20;
int y1 = y2 - 1;
int y2 = random.Next(0, 2);
int y3 = y2 + 1;
return x2 = (((x3 - x1) * (y2 - y1)) / y3 - y1) + x1;
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
在声明之前不能使用局部变量'x2'.
在声明之前不能使用局部变量'y2'.
所以我重新安排了方法的块:
Random random = new Random();
public int SetPointLocation()
{
int x2;
int x1 = x2 - 20;
int …Run Code Online (Sandbox Code Playgroud)