#c# #methods
#c# #методы
Вопрос:
Здравствуйте, мне нужна ваша помощь..
У меня есть 2 класса с именами Book и Title и конструктор с именем Book (строка A, строка B, строка C, строка D), и в основном классе программы я вызываю метод AddCopy(), который включен в класс Title, см. Код из основного класса ниже:
Book book1 = new Book("A", "B", "C","D");
book1.AddCopy(Copy copy);
Теперь мой главный вопрос: как я могу получить доступ к параметрам A, B, C, D в методе AddCopy?
Ответ №1:
Параметры вызова конструктора, A, B, C и D, все ограничены областью действия конструктора — это означает, что они доступны только внутри конструктора.
Чтобы получить доступ к их значениям из метода AddCopy, вам нужно скопировать их в поля уровня класса в конструкторе.
Итак, ваш класс Book становится чем-то вроде:
public class Book
{
private string _a;
private string _b;
private string _c;
private string _d;
public Book(string A, string B, string C, string D)
{
_a = A;
_b = B;
_c = C;
_d = D;
}
public void AddCopy(Copy copy)
{
// within this method you can access the private fields, but there is no
// way to access the A, B, C and D parameters of the constructor.
string someString = _a _b copy.SomeProperty;
}
}
Комментарии:
1. Просто добавлено в код для этого. Обратите внимание, что вы не получаете доступ к самим параметрам, вы не влияете на значения вне класса, только на их копии класса. (вы можете влиять на значения извне, но обычно это плохая идея — или, по крайней мере, что-то, что следует тщательно продумать)
2. @Andrew Ну, тогда приведенный вами код неверен. Не могли бы вы, пожалуйста, отредактировать свой вопрос? Этот простой ответ заключается в том, что вы предоставляете эти поля как общедоступные свойства класса Book. Затем вам нужно сослаться на экземпляр класса Book из класса Title и получить значения из свойств.