Так что я долгое время боролся с этим.
Я пытаюсь узнать ООП, но это настолько велико, что мне трудно хотя бы понять все это.
Предположим, у меня есть метод в классе, который получает что-то из базы данных.
Эти данные будут установлены в переменную.
Теперь у меня есть общедоступный метод, вызывайте его, а затем вызывайте аксессуар со значением. Например:
Вызов метода внутри аксессора C#
private string _name;
public string Name { get { return _name; } }
public void MyMethod()
{
using (SqlConnection connect = new SqlConnection(connectionString))
{
using (SqlCommand command = new SqlCommand("SELECT Name FROM Table WHERE ID = 1", connect))
{
connect.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader.Read())
{
_name = Convert.ToString(reader["Name"]);
}
}
}
}
}
И я бы назвал это нравится:
MyClass myclass = new MyClass();
myclass.MyMethod();
string myname = myclass.Name;
Теперь это кажется очень странным для меня.
Так что я подумал, может быть, стоило бы назвать метод внутри аксессора.
Как:
public string Name { get { MyMethod(); return _name; } }
Вызова это нравится:
MyClass myclass = new MyClass();
string myname = myclass.Name;
Это приведет к меньшему количеству коды, и я могу сделать мой метод частным.
Тем не менее, мне было бы сложно это сделать, когда у метода есть параметры к нему.
Так как мне это сделать? Это плохая практика? Если это не так, как я должен это делать, то как мне это сделать?
Мне очень хотелось бы услышать от вас, ребята! Пожалуйста, не стесняйтесь задавать вопросы или вносить изменения в мой вопрос.
Кроме того, мои искренние извинения, если это уже было задано.
Любые отличные уроки также очень приветствуются!
Как ваш MyMethod означает, что у него нет параметров, поэтому вы можете вызвать его из своего конструктора, тогда он будет устанавливать имя и имя доступно. Вы также можете иметь имя возврата MyMethod, а также задать имя в случае необходимости забрать его позже .. MyMethod может, конечно, вернуть строку .. так что вы можете сделать String myname = myclass.MyMethod(); есть много вариантов, один выбрать, зависит от того, что еще вам нужно, чтобы сделать, что еще ваш класс собирается делать.Вы также можете поставить публичную строку Name {get {myMethod(); }}, если она вернула строку. – BugFinder
Вы назначаете 'Name'' _name', которое является частным полем, оно недоступно вне класса. – abdul
@abdul вам не хватает, что есть открытый аксессор. – Jamiec