Console.Write("Enter size of array");
int n = Convert.ToInt16(Console.ReadLine());
int[] dynamicSizedArray= new int[n]; // Here we have created an array of size n
Console.WriteLine("Input Elements");
for(int i=0;i<n;i++)
{
dynamicSizedArray[i] = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine("Elements of array are :");
foreach (int i in dynamicSizedArray)
{
Console.WriteLine(i);
}
Console.ReadKey();
11
For Class initialization:
var page1 = new Class1();
var page2 = new Class2();
var pages = new UIViewController[] { page1, page2 };
546
如果您想初始化一个预先初始化的相等(非 null 或非 default )元素的固定数组,请使用:
var array = Enumerable.Repeat(string.Empty, 37).ToArray();
另请注意,在上面的声明中,前两个可以用 var (C#3)替换左边的 string[] ,因为右边的信息足以推断出正确的类型 . 第三行必须按显示的方式编写,因为单独的数组初始化语法不足以满足编译器's demands. The fourth could also use inference. So if you'重新进入整个简洁的事情,上面的内容可以写成
var array = new string[2]; // creates array of length 2, default values
var array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
var array = new[] { "A", "B" }; // created populated array of length 2
13 回答
创建自定义类数组的示例
下面是类定义 .
这是你可以初始化数组的方法:
将创建重复'count'次的空字符串数组 . 如果您想要使用相同但特殊的默认元素值初始化数组 . 注意引用类型,所有元素都将引用相同的对象 .
C#中表达式的数组创建语法是:
在第一个中,大小可以是任何非负整数值,并且数组元素被初始化为默认值 .
在第二个中,大小必须是常量,并且给定的元素数必须匹配 . 必须存在从给定元素到给定数组元素类型的隐式转换 .
在第三个元素中,元素必须可以隐式转换为元素类型,并且大小由给定元素的数量确定 .
在第四个中,通过计算具有类型的所有给定元素的最佳类型(如果存在)来推断数组元素的类型 . 所有元素必须可以隐式转换为该类型 . 大小由给定的元素数决定 . 此语法是在C#3.0中引入的 .
还有一种语法只能在声明中使用:
元素必须可隐式转换为元素类型 . 大小由给定的元素数决定 .
我将向您介绍C#4.0规范,第7.6.10.4节“阵列创建表达式” .
您也可以创建动态数组,即在创建数组之前,您可以先询问用户的数组大小 .
如果您想初始化一个预先初始化的相等(非
null
或非default
)元素的固定数组,请使用:另请参加this讨论 .
这些是简单数组的当前声明和初始化方法 .
请注意,存在其他获取数组的技术,例如
IEnumerable<T>
上的LinqToArray()
扩展 .另请注意,在上面的声明中,前两个可以用
var
(C#3)替换左边的string[]
,因为右边的信息足以推断出正确的类型 . 第三行必须按显示的方式编写,因为单独的数组初始化语法不足以满足编译器's demands. The fourth could also use inference. So if you'重新进入整个简洁的事情,上面的内容可以写成重复没有LINQ:
非空数组
var data0 = new int[3]
var data1 = new int[3] { 1, 2, 3 }
var data2 = new int[] { 1, 2, 3 }
var data3 = new[] { 1, 2, 3 }
var data4 = { 1, 2, 3 }
无法编译 . 请改用int[] data5 = { 1, 2, 3 }
.空数组
var data6 = new int[0]
var data7 = new int[] { }
var data8 = new [] { }
和int[] data9 = new [] { }
无法编译 .var data10 = { }
无法编译 . 请改用int[] data11 = { }
.作为方法的参数
只有可以使用
var
关键字指定的表达式才能作为参数传递 .Foo(new int[2])
Foo(new int[2] { 1, 2 })
Foo(new int[] { 1, 2 })
Foo(new[] { 1, 2 })
Foo({ 1, 2 })
无法编译Foo(new int[0])
Foo(new int[] { })
Foo({})
无法编译要么
要么
并在多维数组中
带表达式的简单解决方案 . 请注意,使用NewArrayInit,您只能创建一维数组 .
另一种创建和初始化对象数组的方法 . 这类似于example which @Amol has posted above,除了这个使用构造函数 . 一点点多态性洒在里面,我无法抗拒 .
上下文的类: