2014-01-24 2 views
2

у меня есть две части частичного класса:Declare поле класса в одном разделяемом классе, который наследует класс, а затем инициализировать его в другом

public partial class Class1 : AnotherClass 
{ 
    int id; 
} 

public partial class Class1 
{ 
    public void func() 
    { 
     //here i need to access the id variable defined in the other part 
     id = 1; //this instruction raise an error "The name 'id' does not exists in the current context" 
    } 
} 

Как я могу получить доступ к этой переменной?

+1

Вне метода? – Steve

+0

Я отредактировал название, чтобы надеяться, лучше передать реальный вопрос. – crush

+0

Ваша фактическая проблема в том, почему неинициализированная переменная должна быть объявлена ​​в другом частичном (то есть теперь она не является частичной). – Aphelion

ответ

2

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

public partial class Class1 
{ 
    int id; 
} 

public partial class Class1 
{ 
    //here i need to access the id variable defined in the other part 
    public Class1() 
    { 
    id = 1; 
    } 
} 
7

Вы можете получить доступ к этой области, но вы должны доступ к нему в какой-то метод/конструктор, вы не можете получить доступ к нему на уровне класса.

public partial class Class1 
{ 
    public void SomeMethod() 
    { 
    id = 1; 
    } 
} 

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

public partial class Class1 
{ 
    public Class1(int id) 
    { 
    this.id = id; 
    } 
} 
+0

Извините, я забыл функцию во второй части класса. Теперь я добавил, что – Albirex

+0

@Albirex, ваша подпись метода неверна. В вашем случае следует указать тип возвращаемого значения, а не 'function', это должно быть примерно так:' public void func() '. Но кроме того, он должен компилироваться до тех пор, пока оба класса определены в одном пространстве имен. – Habib

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