C# 所有可能的数组初始化语法
使用C#?可以使用哪些数组初始化语法?这些是简单数组的当前声明和初始化方法C# 所有可能的数组初始化语法,c#,arrays,syntax,array-initialization,C#,Arrays,Syntax,Array Initialization,使用C#?可以使用哪些数组初始化语法?这些是简单数组的当前声明和初始化方法 string[] array = new string[2]; // creates array of length 2, default values string[] array = new string[] { "A", "B" }; // creates populated array of length 2 string[] array = { "A" , "B" }; // creates populated
string[] array = new string[2]; // creates array of length 2, default values
string[] array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
string[] array = new[] { "A", "B" }; // created populated array of length 2
请注意,还存在获取数组的其他技术,例如IEnumerable
上的LinqToArray()
扩展
还请注意,在上面的声明中,前两个可以用var
(C#3+)替换左侧的字符串[]
,因为右侧的信息足以推断正确的类型。第三行必须按显示的格式编写,因为仅数组初始化语法不足以满足编译器的要求。第四种也可以使用推理。因此,如果你对简洁感感兴趣,上面的内容可以写成
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
这些是简单数组的当前声明和初始化方法
string[] array = new string[2]; // creates array of length 2, default values
string[] array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
string[] array = new[] { "A", "B" }; // created populated array of length 2
请注意,还存在获取数组的其他技术,例如IEnumerable
上的LinqToArray()
扩展
还请注意,在上面的声明中,前两个可以用var
(C#3+)替换左侧的字符串[]
,因为右侧的信息足以推断正确的类型。第三行必须按显示的格式编写,因为仅数组初始化语法不足以满足编译器的要求。第四种也可以使用推理。因此,如果你对简洁感感兴趣,上面的内容可以写成
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
C#中的数组创建语法是以下表达式: 在第一种方法中,大小可以是任何非负整数值,数组元素初始化为默认值 在第二种情况下,大小必须是常量,并且给定的元素数必须匹配。必须存在从给定元素到给定数组元素类型的隐式转换 在第三种情况下,元素必须隐式转换为元素类型,并且大小由给定的元素数量决定 在第四种方法中,通过计算具有类型的所有给定元素中的最佳类型(如果有),来推断数组元素的类型。所有元素都必须隐式转换为该类型。大小由给定的元素数决定。这种语法是在C#3.0中引入的 还有一种语法只能在声明中使用:
int[] x = { 10, 20, 30 };
元素必须隐式转换为元素类型。大小由给定的元素数决定
没有一个集所有功能于一体的指南
请参阅C#4.0规范第7.6.10.4节“数组创建表达式”。C#中的数组创建语法是: 在第一种方法中,大小可以是任何非负整数值,数组元素初始化为默认值 在第二种情况下,大小必须是常量,并且给定的元素数必须匹配。必须存在从给定元素到给定数组元素类型的隐式转换 在第三种情况下,元素必须隐式转换为元素类型,并且大小由给定的元素数量决定 在第四种方法中,通过计算具有类型的所有给定元素中的最佳类型(如果有),来推断数组元素的类型。所有元素都必须隐式转换为该类型。大小由给定的元素数决定。这种语法是在C#3.0中引入的 还有一种语法只能在声明中使用:
int[] x = { 10, 20, 30 };
元素必须隐式转换为元素类型。大小由给定的元素数决定
没有一个集所有功能于一体的指南
请参阅C#4.0规范第7.6.10.4节“数组创建表达式”
或
或
在多维数组中
Dim i, j As Integer
Dim strArr(1, 2) As String
strArr(0, 0) = "First (0,0)"
strArr(0, 1) = "Second (0,1)"
strArr(1, 0) = "Third (1,0)"
strArr(1, 1) = "Fourth (1,1)"
或
或
在多维数组中
Dim i, j As Integer
Dim strArr(1, 2) As String
strArr(0, 0) = "First (0,0)"
strArr(0, 1) = "Second (0,1)"
strArr(1, 0) = "Third (1,0)"
strArr(1, 1) = "Fourth (1,1)"
将创建重复“计数”次的空字符串数组。如果您想用相同但特殊的默认元素值初始化数组。注意引用类型,所有元素都将引用相同的对象
将创建重复“计数”次的空字符串数组。如果您想用相同但特殊的默认元素值初始化数组。注意引用类型,所有元素都将引用相同的对象。非空数组
var data0=newint[3]
var data1=newint[3]{1,2,3}
var data2=newint[]{1,2,3}
var data3=new[]{1,2,3}
不可编译。改用var data4={1,2,3}
int[]data5={1,2,3}
var data6=newint[0]
var data7=newint[]{}
和var data8=new[]{}
不可编译int[]data9=new[]{}
不可编译。改用var data10={}
int[]data11={}
var
关键字指定的表达式才能作为参数传递
Foo(新int[2])
Foo(新int[2]{1,2})
Foo(新的int[]{1,2})
Foo(新[]{1,2})
不可编译Foo({1,2})
Foo(新整数[0])
Foo(新int[]{})
不可编译Foo({})
var data0=newint[3]
var data1=newint[3]{1,2,3}
var data2=newint[]{1,2,3}
var data3=new[]{1,2,3}
不可编译。使用var data4={1,2,3}
i
Enumerable.Repeat(String.Empty, count).ToArray()
var contacts = new[] { new { Name = " Eugene Zabokritski", PhoneNumbers = new[] { "206-555-0108", "425-555-0001" } }, new { Name = " Hanying Feng", PhoneNumbers = new[] { "650-555-0199" } } };
var array = Enumerable.Repeat(string.Empty, 37).ToArray();
float[] floats = System.Array.ConvertAll(new float[16], v => 1.0f);
public class DummyUser { public string email { get; set; } public string language { get; set; } }
private DummyUser[] arrDummyUser = new DummyUser[] { new DummyUser{ email = "abc.xyz@email.com", language = "English" }, new DummyUser{ email = "def@email.com", language = "Spanish" } };
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();
NewArrayExpression expr = Expression.NewArrayInit(typeof(int), new[] { Expression.Constant(2), Expression.Constant(3) }); int[] array = Expression.Lambda<Func<int[]>>(expr).Compile()(); // compile and call callback
IUser[] userArray = new IUser[] { new DummyUser("abc@cde.edu", "Gibberish"), new SmartyUser("pga@lna.it", "Italian", "Engineer") };
interface IUser { string EMail { get; } // immutable, so get only an no set string Language { get; } } public class DummyUser : IUser { public DummyUser(string email, string language) { m_email = email; m_language = language; } private string m_email; public string EMail { get { return m_email; } } private string m_language; public string Language { get { return m_language; } } } public class SmartyUser : IUser { public SmartyUser(string email, string language, string occupation) { m_email = email; m_language = language; m_occupation = occupation; } private string m_email; public string EMail { get { return m_email; } } private string m_language; public string Language { get { return m_language; } } private string m_occupation; }
For Class initialization: var page1 = new Class1(); var page2 = new Class2(); var pages = new UIViewController[] { page1, page2 };
public class Page { private string data; public Page() { } public Page(string data) { this.Data = data; } public string Data { get { return this.data; } set { this.data = value; } } }
Pages = new Page[] { new Page("a string") };
string[] array = new string[2]; string[] array2 = new string[] { "A", "B" }; string[] array3 = { "A" , "B" }; string[] array4 = new[] { "A", "B" };
string[] array = new string[2]; string[] array2 = new string[] { "A", "B" }; string[] array3 = new string[] { "A", "B" }; string[] array4 = new string[] { "A", "B" };
using System.Linq ..... public int[] arrayName = Enumerable.Range(0, 9).ToArray();