我一直在c#中使用c ++和new。在c ++中,我使用int a[8]
来声明一个数组,如果数组是一个对象,我们将值设置为item[0].SetID(5)
,这将把第一项ID的值设置为5.但我无法在C#。
namespace Arrays
{
class items {
public int ID { set; get; }
public string name { set; get; }
public items(int ID) {
this.ID = ID;
name = "Faizan";
}
}
class Program
{
static void Main(string[] args)
{
var i=new items[4];
i[0].ID=6;// this line is kind of c++ code but how I do it in c#
Random r = new Random();
for (int k = 0; k < 4; k++) {
i[k] = new items(r.Next());
}
foreach(items it in i){
Console.WriteLine("The item name {0} and the Id is {1}",it.name,it.ID);
}
}
}
}
答案 0 :(得分:3)
创建后,数组将填充默认值。 MSDN:
如果在声明时没有初始化数组,那么 数组成员自动初始化为默认初始值 数组类型的值。
对于引用类型(即类),默认值为空。因此,您应该在访问之前初始化数组项:
var i =new items[4];
// i[0] here is null
for (int k = 0; k < 4; k++) {
i[k] = new items(r.Next()); // now i[0] points to object in memory
}
i[0].ID = 6;// now you can set object's property
答案 1 :(得分:1)
索引0处的项目为空。你需要这样做
i[0] = new items{ID = 6};
答案 2 :(得分:0)
i [0] .ID = 6; //这一行是c ++代码,但我是如何在c#
中完成的
你点上的数组为空。你在循环后初始化它。
所以
访问/更改该数组中实例的属性
之后static void Main(string[] args)
{
Random r = new Random();
for (int k = 0; k < 4; k++) {
i[k] = new items(r.Next());
}
foreach(items it in i){
Console.WriteLine("The item name {0} and the Id is {1}",it.name,it.ID);
}
var i= items[4];
i.ID=6;// NOW YOU CAN ACCCESS IT
//OR SIMPLY
items[4].ID=6;
}
答案 3 :(得分:0)
IN c ++当我们声明一个对象的数组时,它会自动初始化为NULL或“0”,我们可以在此之后得到或设置值(如果我错了,请纠正我)。那个c#怎么样? 我认为var i =新项目[4];这行也初始化了数组,是吗?