【问题标题】:Assigning values without initializing C#在不初始化 C# 的情况下赋值
【发布时间】:2019-10-11 05:44:23
【问题描述】:

如果我可以通过以下方式将值分配给数组,我可以知道其中的区别

int [] marks = { 99,  98, 92, 97, 95};

为什么我看到有人写这个?

int [] marks = new int[]  { 99,  98, 92, 97, 95};

有什么区别?

第二个问题,由于int是原始类型,我可以通过

int i;

但我可以看到有人这样写

int i = new int();

又有什么区别呢?非常感谢!

【问题讨论】:

  • 这两种初始化数组的方式没有区别。第一种方法在编写代码方面更简单。它为您提供语法糖,但不会以不同的方式初始化数组。
  • int只是背景中的一个关键字,它表示Int32结构。试试看!点击 int 关键字并按 F12
  • stackoverflow.com/questions/5678216/… 还有很多其他方法,你知道的。
  • int i = new int();你不能用给定的整数值初始化,但用int i你可以做..int i = 9
  • 较短的初始化语法是较新的。老派更冗长。

标签: c# arrays initialization


【解决方案1】:

一般的答案是a)C# 中您可以通过几种方式获得相同的结果 和b) 从一开始并不是所有的方法都可用。

b) 有两个部分:

  • 在添加新方法之前编写的代码
  • 用旧习惯编写的新代码 - 新方法并不总是比旧方法更好,它们只是看起来更好:)

回复:数组

查看单维数组(C# 编程指南)中的Array Initialization

Object and Collection Initializers (C# Programming Guide) 也是相关的。

另外,在来自 new 运算符(C# 参考)Array Creation 中显示了 3 种方式(这还不是全部方式):

var a = new int[3] { 10, 20, 30 };
var b = new int[] { 10, 20, 30 };
var c = new[] { 10, 20, 30 };

这里甚至还有一个关于所有可能方式的问题:All possible array initialization syntaxes


回复:新的 int

答案分为两部分:

  1. int i;(只是一个声明)在初始化之前不能使用。
  2. 有多种初始化变量的方法,就像数组一样。

查看值类型(C# 参考)中的Initializing value types

你可以在那里阅读:

当然,您可以将声明和初始化放在与以下示例相同的语句中:

int myInt = new int();

——或——

 int myInt = 0;

对于默认值,请查看Default values table (C# reference)。你可以在那里看到你也可以:

int a = default(int);

甚至来自C# 7.1

int a = default;

【讨论】:

    【解决方案2】:

    两者都是一样的,唯一的区别就是文风而已。

    int i = new int(); 不能使用给定的整数值进行初始化,但int i 可以像int i = 9; 那样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 2022-12-07
      • 2011-03-14
      • 1970-01-01
      相关资源
      最近更新 更多