You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中初始化数组时大括号{}与方括号[]的区别是什么?

C#数组初始化:大括号{}与方括号[]的差异

你给出的代码里两种写法输出一致,是因为在变量声明并初始化这个场景下,它们最终都创建了相同的int[]实例。但两者本质是不同的语法特性,核心差异如下:

  • 语法适用范围不同

    • 大括号{}是传统的集合初始化器,只能用于变量声明时的初始化,不能单独作为表达式传递或赋值。比如你不能直接写Console.WriteLine({1,2,3}[0]);,也不能给已声明的数组变量赋值arr = {4,5,6};,编译器会直接报错。
    • 方括号[]是C# 12引入的数组字面量,属于独立的表达式,可以在任何需要数组实例的地方使用。比如直接传递给方法DoSomething([1,2,3]);,或者给已有的数组变量赋值arr = [4,5,6];,这些操作大括号都做不到。
  • 类型推断能力不同

    • 用var声明变量时,大括号初始化器无法单独推断类型,比如var arr = {1,2,3};会编译失败——编译器不知道你要创建数组还是其他集合(比如List<int>)。
    • 数组字面量[]可以直接被var推断为对应类型的数组,var arr = [1,2,3];会被编译器自动识别为int[],不需要额外的类型上下文。
  • 适用的集合类型不同

    • 大括号初始化器是通用语法,除了数组,还能初始化所有实现IEnumerable且包含Add方法的集合类型,比如List<int> list = {1,2,3};、Dictionary<int, string> dict = {{1,"a"}, {2,"b"}};。
    • 方括号[]是专门为数组设计的语法,只能创建数组实例,不能用来初始化其他集合类型。

回到你的代码,int[] array2 = { 1, 2, 3, 4, };和int[] array3 = [1, 2, 3, 4,];在当前场景下行为完全一致,都是初始化一个包含4个int元素的数组,所以输出相同。

内容的提问来源于stack exchange,提问作者AB_ OBADA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 17:37:07