相关疑难解决方法(0)

在C#中使用带有`new`运算符的值类型的困境

operator new()与引用类型一起使用时,实例的空间在堆上分配,引用变量本身放在堆栈上.除此之外,在堆上分配的引用类型实例中的所有内容都将被清零.
例如,这是一个类:

class Person
{
    public int id;
    public string name;
}
Run Code Online (Sandbox Code Playgroud)

在以下代码中:

class PersonDemo
{
    static void Main()
    {
        Person p = new Person();
        Console.WriteLine("id: {0}  name: {1}", p.id, p.name);
    }
}
Run Code Online (Sandbox Code Playgroud)

p变量在堆栈上,并且Person(所有它的成员)的创建实例都在堆上.p.id会是0p.name将会null.这将是这种情况,因为堆上分配的所有内容都已清零.

现在我感到困惑的是,如果我使用带new运算符的值类型.例如,考虑以下结构:

struct Date
{
    public int year;
    public int month;
    public int day;
}

class DateDemo
{
    static void Main()
    {
        Date someDate;
        someDate= new Date();

        Console.WriteLine("someDate is: {0}/{1}/{2}", 
            someDate.month, …
Run Code Online (Sandbox Code Playgroud)

.net c# value-type reference-type

10
推荐指数
2
解决办法
1777
查看次数

int num = new int(); 这条线执行时会发生什么?

今天要了解一个新事物,我们可以使用new运算符创建整数,如下所示

int num = new int();
Run Code Online (Sandbox Code Playgroud)

现在我想知道我是否以这种方式创建一个整数,然后生成的整数将是值类型或引用类型?我想这将是一种价值类型.我尝试了下面的代码

int num1 = 10;
int num2 = new int();
int num3;
num1 = num2;
num2 = num3;
Run Code Online (Sandbox Code Playgroud)

我得到了以下构建错误:

使用未分配的局部变量'num3'

我知道为什么会出现这个构建错误.但我想知道何时以及如何使用new int()以及这究竟是如何工作的?有人可以对此有所了解吗?

感谢和问候 :)

.net c# instantiation value-type new-operator

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

C#中"0"和"new int()"之间的区别

可能重复:
在哪里以及为什么使用int a = new int?

下面这两个有什么区别?

int i =0; 
int i = new int();
Run Code Online (Sandbox Code Playgroud)

在内存分配方面有什么区别吗?还有其他区别吗?

c#

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

有什么区别"int myInt;" 和"int myInt = 0;"

哪个C#语句等同于此:

int myInt = new int();
Run Code Online (Sandbox Code Playgroud)

我在http://smarterer.com上发现了这个问题.smarterer.com网站建议3个答案:

  • int myInt = NULL;
  • int myInt;
  • int myInt = 0;

我知道第一个命题是不正确的.但是另外两个呢.我现在的问题是int myInt;和之间的区别是什么int myInt = 0;?对我来说也是如此.

c#

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

我如何声明按钮的二维数组

在C#中,我如何声明一个二维的按钮数组?

c# visual-studio-2010

-8
推荐指数
1
解决办法
1007
查看次数