c# - 在 C# 中,为什么在声明 int 时不使用 'new' 关键字?

标签 c# int

当声明一个 int..

int A = 10;

为什么不改为执行以下操作?

int A = new Int()
A=10;

两者一样吗?

最佳答案

因为 intInt32 的语法糖这是一个值类型。顺便说一下,常数值 10(value type Int32 的一个实例)也是如此。这就是为什么您不需要使用 new 的原因创建一个新实例,而是复制 10 并将其命名为 A。类似的语法也适用于引用类型,但不同之处在于不创建副本;创建了一个引用。

基本上,您可以将10 视为先前声明的Int32 实例。 .然后 int A = 10 只是将变量 A 设置为值 10副本(如果我们谈论的是 reference types 那么 A 将是设置为对实例的引用而不是副本)。

为了更好地说明这里是另一个例子:

struct SomeValueType {
    public SomeValueType(){        
    }
}

public static readonly SomeValueType DEFAULT = new SomeValueType();

那么你可以这样做:

SomeValueType myValueType = DEFAULT;  // no neeed to use new!    

现在假设 SomeValueTypeInt32DEFAULT10。就是它!

关于c# - 在 C# 中,为什么在声明 int 时不使用 'new' 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15560261/

相关文章:

c - int类型并像c中的 "flags"一样使用它

c# - 创建 Sql Server 身份验证帐户?

c# - 拆分和分组字符串

SQL Server : How to replace whitespaces(&nbsp, ASCII)在带数字的字符串中?

python - 将长整数列表转换为整数

c++ - 格式化 : how to convert 1 to “01” , 2 到 “02” , 3 到 "03",等等

c# - 为什么我无法更改实例化后用作属性的结构中的字段?

c# - SQL + Cyrillic 支持 + 参数化查询 + 多项选择

c# - 等待后任务继续不工作

java - Java 每秒将 int 从 10 减少到 0