您必须为 Class1 的属性定义get 访问器,因为它们都无法从类外部访问,而 Class2 需要使用它们的值。使用 get 访问器定义公共属性可能很有用:
private int first;
public int First
{
get
{
return first;
}
}
像这样定义 Class1 中的每个属性,您就可以访问这些值。调用 SomeMethod 后,两个对象的属性可以通过两种简单的方式均衡(参见:签名和重载):
public void SomeOtherMethod()
{
Class1 tempClass = new Class1();
tempClass.SomeMethod();
this.first = tempClass.first;
this.FirstString = tempClass.firstString;
this.isTrue = tempClass.isTrue;
}
public void SomeOtherMethod(Class1 myClass) // Overloaded method
{
this.first = myClass.first;
this.FirstString = myClass.firstString;
this.isTrue = myClass.isTrue;
}
尽管上述技术似乎是您所要求的,但最好的方法是使用构造函数初始化类的属性。这样,您不必在每次创建 Class1 对象时调用 SomeMethod,并且您还可以在创建新对象时设置其默认值。此外,为属性提供更通用的名称将使您免于重复。我编写了一些代码来为您提供易于理解的语法,以防止将来出现不可访问性和重复性问题。
public class Class1
{
private int number;
public int Number
{
get { return number; }
}
private string name;
public string Name
{
get { return name; }
}
private bool isTrue;
public bool IsTrue
{
get { return isTrue; }
}
public Class1()
{
number = 1;
name = "FirstString";
isTrue = true;
}
public Class1(int value1, string value2, bool value3)
{
number = value1;
name = value2;
isTrue = value3;
}
}
public class Class2
{
private Class1 firstClass;
private Class1 secondClass;
public Class2()
{
firstClass = new Class1();
secondClass = new Class1(2, "SecondString", false);
}
}
如果要在 Class2 中定义许多 Class1 对象,则必须使用数组或列表等解决方案。我将给出一个简短的示例,请参阅MSDN 列表页面。
private List<Class1> class1List = new List<Class1>();
class1List.Add(new Class1());
class1List.Add(new Class1(2, "SecondString", false));