2015-07-27 2 views
1

Я пытаюсь вернуть строку, хотя Getter, строка получена из объекта DataRead, который проходит через запрос mysql. Проблема заключается в том, что при загрузке строка не загружается на метку основной формы, она возвращает пустую строку, и если я назначу строку переменной при объявлении, она вернет ее в мою основную форму. Вот код:Getter возвращает пустое значение считывателя

string text; 
public string Text { get { return text; } } 

public void DBConn() 
{ 
    MySqlConnection conn = new MySqlConnection(connStr); 
    DataSet ds = new DataSet(); 
    MySqlDataReader reader = null; 

    try 
    { 
      // connection to DB 
      reader = cmd.ExecuteReader(); 
      if (reader != null && reader.HasRows) 
      { 
       while (reader.Read()) 
       { 
        text = reader["string1"].ToString() + " " + reader["string2"].ToString() + " " + reader["string3"].ToString(); 
       } 
      } 
    } 
     // try, catch. conn.close() 
} 

Читатель присвоение значения на текст просто отлично, но за пределами времени, значение не присваивается глобально объявленным переменным, кажется, разрушаться, как только он выходит из цикла. Кто-нибудь может помочь?

спасибо.

+0

Вы уверены, что не существует локальной переменной, называемой 'text', которую вы, возможно, отредактировали вне вашего вопроса? BTW, в этом типе сценария вместо того, чтобы объявлять переменную поддержки самостоятельно, вы можете использовать 'public string Text {get; частный набор; } ', а затем назначить« Text = reader ... ». Setter является приватным классу, когда объявляется таким образом. –

+0

У меня получилось, что я не понял, но не понял. Я объявил, что и переменная, и геттер вне любого метода, странно, что у меня есть пара сеттеров, а также они устанавливают значение для класса. – hectormtnezg

+3

Как бы то ни было, ваш цикл сбрасывает значение текста на каждой итерации. Может быть, последняя итерация имеет пустое значение? –

ответ

0

Спасибо тем, кто помог мне найти решение описанной проблемы. Поскольку некоторые из вас любезно объяснили (и мне не хватало знаний, чтобы понять сначала, пока не было сделано много исследований), проблема оказалась проблемой с моей основной формой, находящейся в другом экземпляре из первого класса, который требует класс, в котором есть Геттер. Теперь я знаю, что должен был упомянуть обо всех этих деталях в исходном посте, я извиняюсь перед теми из вас, кто пытался понять из небольшого фрагмента кода. После большого количества исследований по Экземпляры, решение, к которому я пришел, было первым, создать класс, который содержит статические Getters и Setters public static string Text { set; get; } (это было так, как я хотел для легкого доступа из других классов), это помогает сделать их доступными из во всех случаях это может быть не лучшее решение, особенно для ООП. Во время моих исследований я где-то читал, что использование Setters и Getters - пустая трата времени, а не лучшая практика для программистов, что лучше всего инкапсулировать, а потому, что я все еще очень Я буду искать, как это сделать позже.

Спасибо, ребята, снова.

Смежные вопросы