我即将在代码中创建100,000个对象.它们很小,只有2或3个属性.我将它们放在一个通用列表中,当它们存在时,我将循环它们并检查值a
并可能更新值b
.
将这些对象创建为类还是结构更快/更好?
编辑
一个.属性是值类型(我认为字符串除外?)
湾 他们可能(我们还不确定)有一个验证方法
编辑2
我想知道:堆上的对象和堆栈是否由垃圾收集器同等处理,或者它的工作方式有何不同?
在C#中,结构是值类型,但我能够将new
它们视为引用类型.为什么是这样?
为什么我们没有被强制实例化一个结构,比如在使用类时?
我在C#中有两个相似的结构,每个结构都包含一个整数,但后者有实现的get/set访问器.
为什么在分配字段之前必须Y
使用new
运算符初始化struct a
?是y
仍然当我初始化它的值类型new
?
public struct X
{
public int a;
}
public struct Y
{
public int a { get; set; }
}
class Program
{
static void Main(string[] args)
{
X x;
x.a = 1;
Y y;
y.a = 2; // << compile error "unused local variable" here
Y y2 = new Y();
y2.a = 3;
}
}
Run Code Online (Sandbox Code Playgroud) 今天要了解一个新事物,我们可以使用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()
以及这究竟是如何工作的?有人可以对此有所了解吗?
感谢和问候 :)