相关疑难解决方法(0)

为什么局部变量必须具有初始值

为什么我必须在方法内初始化变量?

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)

c#

7
推荐指数
2
解决办法
2701
查看次数

变量初始化(C#和C++)

快速问题,当它没有携带正值或负值时,初始化所有"空白或空"变量是一种好习惯,例如使用:

int value = 0;
Run Code Online (Sandbox Code Playgroud)

代替:

int value;
Run Code Online (Sandbox Code Playgroud)

我接受Visual Studio编译器,根据我的理解,默认情况下,如果未事先初始化变量,则会自动将变量初始化为0,但我很好奇最佳实践是什么以及潜在危险(如果有的话)是什么.

虽然我特别指的是VS环境中的C#和C++语言,但这个问题对所有语言和编译器都是开放的.

c# c++ variables initialization visual-studio

3
推荐指数
1
解决办法
3126
查看次数

为什么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)

我想知道这背后的理由是什么?为什么不能编译器只是初始化_y0时候有没有提供明确的构造,因为它呢?

c# struct

2
推荐指数
1
解决办法
72
查看次数

运行时计算

我正在使用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)

c# winforms

0
推荐指数
1
解决办法
164
查看次数

标签 统计

c# ×4

c++ ×1

initialization ×1

struct ×1

variables ×1

visual-studio ×1

winforms ×1