2012-06-13 2 views
2

я не могу найти какое-либо решение посланной проблемы:Ошибка: Поле инициализатор не может ссылаться на нестатическое поле, метод или свойство

class ApiData 

{ SqlCeConnection conn = new SqlCeConnection(@"Data Source=C:\Users\Peter\Documents \db.sdf;"); 

SqlCeCommand cmd = null; 
    SqlCeDataReader rdr = null; 
    public string code() 
    { 
     conn.Open(); 
     cmd = conn.CreateCommand(); 
     cmd.CommandText ="SELECT code FROM Charakter WHERE id=1"; 
     rdr = cmd.ExecuteReader(); 
     rdr.Read(); 
     string selected = rdr.GetString(0); 
     conn.Close(); 
     return (selected); 
    } 
class Data{ 
    ApiData g= new ApiData(); 
    string vode = **g.code();** 
} 

почему это получает ошибку «Поле инициализатор не может ссылаться на нестатического поля, метода или свойства "на выделенной жирной линией строке?

+1

дубликата http://stackoverflow.com/questions/7400677/a-field-initializer-not-reference-the-non-static-field-method-or-property – zebrabox

ответ

1

Попробуйте сделать поле static, которое дает этого вопрос

//INITIALLY this field was non-static 
//public string ConnectionString = "Data Source=ServerName;Initial Catalog=DBname;User Id=user_id;Password=password"; 

//Make this field static 
public static string ConnectionString = "Data Source=ServerName;Initial Catalog=DBname;User Id=user_id;Password=password"; 
static SqlConnection sqlConnection = new SqlConnection(ConnectionString); 

Надеется, что это помогает ...

+0

Почему строка подключения должна быть STATIC? –

+0

@umesssohaliya Это довольно старый ответ, возможно, я, возможно, сделал некоторые хиты и испытания в одном из наших проектов. – xameeramir

7

Начальные значения полей должны использовать константы, статические поля/методы/свойства или новые экземпляры. Вместо этого установи его в конструкторе:

class Data 
{ 
    ApiData g; 
    string vode; 

    public Data() 
    { 
     g = new ApiData(); 
     vode = g.code(); 
    } 
} 
+0

«Начальные значения полей должны использовать константы» - это не так ограничительно; они также могут ссылаться на статические поля, методы или свойства. Но решение верно, +1. – Joe

+0

спасибо, я пробовал это раньше, но забыл «string vcode;» линия. Я слишком долго ничего не делал на C# ^^ –

+0

Правильно @Joe, я обновил ответ, чтобы включить их. –

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

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