可以在声明数组和可空类型之前使用它们吗?

xpo*_*ort 1 c# arrays nullable

我引用了本书的以下段落: C#编程语言第四版

C#支持任何类型的单维和多维数组.与上面列出的类型不同,数组类型在使用之前不必声明.而是通过使用带方括号的类型名称来构造数组类型.例如,int []是int的一维数组,int [,]是int的二维数组,int [] []是int的一维数组的一维数组.

可以使用Nullable类型之前也不必声明它们.对于每个非可伸缩值类型T,存在相应的可空类型T ?,其可以保持附加值null.例如,int?是一种可以保存任何32位整数或值为null的类型.

如何使用数组和可空类型而不事先声明它们?

Bol*_*ock 6

简短的回答

这些引文试图说明的是,您不必像声明自定义类一样"创建"(或声明)数组和可空值类型,以便使用它们.它们已作为C#语言功能提供.

答案很长

如果要声明一个ints 数组,只需执行以下操作:

int[] intArray = new int[5];
Run Code Online (Sandbox Code Playgroud)

例如Foo,如果您创建了一个自定义类,并且想要声明一个Foo对象数组,那么第一个引用就是说您不必编写代码来告诉编译器有关可以保存Foo对象的数组类型; 只需这样做,编译器将找出其余的:

Foo[] fooArray = new Foo[5];
Run Code Online (Sandbox Code Playgroud)

同样,要创建可以为null的值类型的项,只需附加?到类型:

int? nullableInt = null;
Run Code Online (Sandbox Code Playgroud)

另外,上面只是Nullable<T>结构的语法糖:

Nullable<int> nullableInt = null;
Run Code Online (Sandbox Code Playgroud)

请注意,这仅适用于值类型(包括结构),因为默认情况下所有引用类型(对象,委托等)都可以为空.