C#可以使用哪些数组初始化语法?
当前回答
hi只是为了添加另一种方式:从此页面:https://learn.microsoft.com/it-it/dotnet/api/system.linq.enumerable.range?view=netcore-3.1
如果您想生成0到9的指定范围内的整数序列,可以使用此表单:
using System.Linq
.....
public int[] arrayName = Enumerable.Range(0, 9).ToArray();
其他回答
带有表达式的平凡解决方案。注意,使用NewArrayInit,您可以只创建一维数组。
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
这些是简单数组的当前声明和初始化方法。
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<T>上的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
对于以下类别:
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") };
希望这有帮助。
For Class initialization:
var page1 = new Class1();
var page2 = new Class2();
var pages = new UIViewController[] { page1, page2 };
您还可以创建动态数组,即,在创建数组之前,您可以先向用户询问数组的大小。
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();
推荐文章
- 如何在没有任何错误或警告的情况下找到构建失败的原因
- 跨线程操作无效:控件“textBox1”从创建它的线程以外的线程访问
- 否ConcurrentList<T>在。net 4.0?
- 在c#中解析字符串为日期时间
- 由Jon Skeet撰写的《Singleton》澄清
- 用“+”(数组联合运算符)合并两个数组如何工作?
- 自定义数字格式字符串始终显示符号
- 单元测试无效方法?
- Post参数始终为空
- 使用Moq验证方法调用
- string.ToLower()和string.ToLowerInvariant()
- 使arrayList.toArray()返回更具体的类型
- 如何为一个或枚举删除一个项目?
- 如何从对象数组中通过对象属性找到条目?
- 检查instance是否属于某个类型