Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 所有可能的数组初始化语法_C#_Arrays_Syntax_Array Initialization - Fatal编程技术网

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

使用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 array of length 2
string[] array = new[] { "A", "B" }; // created populated array of length 2
请注意,还存在获取数组的其他技术,例如
IEnumerable
上的Linq
ToArray()
扩展

还请注意,在上面的声明中,前两个可以用
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
上的Linq
ToArray()
扩展

还请注意,在上面的声明中,前两个可以用
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();