这是什么意思? (关于类和实例)

时间:2016-07-15 18:16:46

标签: c# class instance

using System;

class Program
{
    static void Main()
    {
        haha haha1;
    }
}

class haha
{
    int a;
    int b;

    public haha(int a, int b)
    {
        this.a = a;
        this.b = b;
    }
}

我知道如果我想要make实例,我应该编写如下代码:

haha haha1 = new haha(1,2);

但是当我写的时候

haha haha1;

没有编译错误。

haha haha1;是什么意思?代码不错吗?

2 个答案:

答案 0 :(得分:4)

这不是错误的代码。这是一个变量声明。

haha haha1;

简单地声明一个名为haha1的变量,其类型为haha。但是,此变量未分配值。

使用new关键字实例化对象时:

haha1 = new haha();

该变量然后引用创建的对象

答案 1 :(得分:2)

这取决于编程语言,但大多数编程语言选择以下两个选项之一:

1)隐式初始化(​​C ++)

haha haha1;

相同
haha haha1 = new haha1();

2)空初始化(C#)

haha haha1;

相同
haha haha1 = null;

无论发生什么,行为的结果称为“默认值”或“默认初始值设定项”。有关详细信息,请参阅语言文档。

一些注意事项:C和C ++允许变量未初始化,因此在分配变量之前它们没有确定值。 C ++非指针不能为NULL,因此它们总是用某些东西初始化(但其他所有东西,包括指针,都遵循C规则)。