C# 将对象传递给另一个类?
我最近一直在研究构造函数,我正在尝试将一个对象传递给另一个类文件,我这样做的方式如下:C# 将对象传递给另一个类?,c#,oop,C#,Oop,我最近一直在研究构造函数,我正在尝试将一个对象传递给另一个类文件,我这样做的方式如下: class Program { static void Main(string[] args) { Class1 objPls = new Class1(); objPls.nameArray[0] = "jake"; objPls.nameArray[1] = "tom"; objPls.nameArray[2] = "mar
class Program
{
static void Main(string[] args)
{
Class1 objPls = new Class1();
objPls.nameArray[0] = "jake";
objPls.nameArray[1] = "tom";
objPls.nameArray[2] = "mark";
objPls.nameArray[3] = "ryan";
Echodata form2 = new Echodata(objPls);
}
}
class Class1
{
public string[] nameArray = new string[3];
}
class Echodata
{
public Class1 newobject = new Class1();
public Echodata(Class1 temp)
{
this.newobject = temp;
}
// so now why cant i access newobject.namearray[0] for example?
}
问题是我无法访问对象以进入阵列
传递物体的方法有哪些?有人告诉我这大概是一种方法,我已经尝试了一段时间,但没有效果。不确定这是什么,你不能做。例如,修改后的代码可以工作,或者至少可以编译
class echodata
{
public Class1 newobject = new Class1();
public echodata(Class1 temp)
{
this.newobject = temp;
}
// so now why cant i access newobject.namearray[0] for example?
// What kind of access do you want?
public void method1()
{
newobject.nameArray[0] = "Jerry";
}
}
当您试图在数组的第四个索引上设置“ryan”字符串时,代码会抛出一个错误。最初将数组的长度设置为3 在EchoData类中,您可以访问nameArray对象而不会出现问题,但必须在方法或构造函数中访问它。您不能在这些之外操纵它的内容
请记住,在EchoData类中,您将看不到在主方法中设置的值。很难说,因为您没有包含完整的可编译示例,并且您没有确切解释“无法访问”的含义(您是否遇到错误?是什么?) 但是,我猜想您正在尝试根据代码从类级别访问传入的对象字段 即,您正在尝试这样做:
class Echodata
{
public Class1 newobject; // you don't need to initialize this
public Echodata(Class1 temp)
{
this.newobject = temp;
}
newobject.newArray[0] = "Can't do this at the class level";
}
只能从成员方法中访问nameArray
class Echodata
{
public Class1 newobject; // you don't need to initialize this
public Echodata(Class1 temp)
{
this.newobject = temp;
}
public void DoSOmething() {
newobject.newArray[0] = "This works just fine";
}
}
如果类不包含实例构造函数声明,则会自动提供默认实例构造函数。该默认构造函数只调用直接基类的无参数构造函数。如果直接基类没有可访问的无参数实例构造函数,则会发生编译时错误。如果类是抽象的,那么默认构造函数的声明可访问性将受到保护。否则,默认构造函数的声明可访问性是公共的。如果您提供确切的编译器错误以及最小的重新编译案例,这总是有帮助的。如果没有编译器错误,请解释您的示例输入是什么、预期输出是什么以及实际输出是什么。您上面的代码甚至不会编译,它将在这一行中断:
objPls.nameArray[3]=“ryan”
因为nameArray
的大小为3,但您正在尝试设置第四个元素。您是否注意到,由于nameArray的大小为3,但您在objPls中引用的大小为4,因此出现了异常。nameArray[3]=“ryan”。如果将class1更改为string[]nameArray=newstring[4],它应该可以工作