Вы должны определить get accessors для свойств Class1, потому что все они недостижимы вне класса и Класс2 должен использовать свои значения. Определение открытых свойств с ПОЛУЧИТЬ аксессор может быть полезно:
private int first;
public int First
{
get
{
return first;
}
}
Имея каждое свойство в Class1 определена, как это, вы можете получить доступ к значениям. После вызова SomeMethod, свойства двух объектов могут быть уравнены в двух простых способов (Смотри также: Signatures and overloading):
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;
}
Несмотря на то, что методы выше, кажется, хотели быть то, что вы просили, лучше всего инициализировать класса свойства с использованием constructors. Таким образом, вам не нужно вызывать SomeMethod каждый раз, когда вы создаете объект Class1, и вы также можете устанавливать его значения по умолчанию всякий раз, когда создается новый. Кроме того, предоставление более общих имен свойствам избавит вас от дубликатов. Я пишу код, чтобы предоставить вам понятный синтаксис, который предотвратит будущие проблемы не доступности и повторения.
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);
}
}
Если вы собираетесь определить множество объектов class1 в Class2, то решение, такие как массив или список становится обязательным. Я приведу короткий пример, см. MSDN List page.
private List<Class1> class1List = new List<Class1>();
class1List.Add(new Class1());
class1List.Add(new Class1(2, "SecondString", false));
Почему '' Class2' * не содержит * 'Class1', а не пересказывает все его свойства? У вас есть причина? В противном случае, похоже, вы должны смотреть на [композицию] (http://en.wikipedia.org/wiki/Composition_over_inheritance). –
Я думаю, что вам нужно «Список' в 'Class2' вместо повторения всех полей *, которые много раз *. –
Вопрос неясен, но он может просто хотеть адаптера. –