2010-11-03 2 views
-1

У меня есть вопрос.Некоторые логические концепции ООП

class A 
{ 
    static void m1() 
    { 
     int x=10; 
    } 
} 

class B 
{ 
    // if i want to access the variable x in b class how can i access it 

    A a = new A(); 
    // a. what should i write here to access x variable 
} 
+0

Что такое «называют»? Недействительно C#, конечно. – jalf

+0

Я хочу знать, как я могу получить доступ к некоторым переменным public methods в каком-то другом классе или в том же классе – NoviceToDotNet

+0

или переменные mehods имеют ограничения, ограниченные только этими методами, поэтому мы не можем получить к ним доступ .... – NoviceToDotNet

ответ

2

Для того, чтобы получить доступ к x вы должны сделать это поле на A:

class A 
{ 
    public int X; 
} 
class B 
{ 
    static void Main() 
    { 
     A a = new A(); 
     a.X = 17; 
    } 
} 

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

class A 
{ 
    int _x; 
    public int X 
    { 
     get { return _x; } 
     set { _x = value; } 
    } 
} 

Если этот синтаксис кажется громоздким, вы можете немного его упростить. C# имеет функцию автоматически реализованы свойства, в которых компилятор будет генерировать выше код для вас, если вы сделаете это:

class A 
{ 
    public int X { get; set; } 
} 
+0

sir, что является типом по умолчанию для свойства, является ли он закрытым или общедоступным? – NoviceToDotNet

+0

По умолчанию все члены класса являются 'private'. –

1

Это должно быть либо свойство, либо общедоступная переменная.

+0

- свойства всегда публичные, или мы явно объявляем их публичными, и по умолчанию они являются частными? – NoviceToDotNet

+0

Пожалуйста, прочитайте эту ссылку http://stackoverflow.com/questions/653536/difference-between-property-and-field-in-c – PradeepGB

1
class Class1 
    { 
     public int x; 

     public void M1() 
     { 
      x = 10; 
     } 

    } 

class ClassB 
{ 

void Method() 
{ 
    Class1 a = new Class1(); 
    a.M1(); 
    a.x = 5; 
    //at this point the x will contain 5 
} 
} 

В exmaple используются переменные экземпляра, а не статические.

Чтобы получить доступ к статическим переменным вы должны иметь статический метод M1, то в ClassB вы получаете доступ к переменной х usign имя класса не имя объекта, например:

Class1.x = 5; 

переменной x1 также должен быть объявлен как статический например: public static x = 10;

1

Во-первых, задавая вопрос, пожалуйста, потратьте всего 30 секунд, чтобы получить его . Ваш код вздор.

call недействительное ключевое слово на C#. Возможно, вы имели в виду class? Или что-то другое? Во-вторых, неразумно ли просить вас запускать текст через проверку орфографии? Никто из нас не получает деньги, чтобы ответить на ваши вопросы, мы делаем это бесплатно, в наше свободное время. Поэтому, если вы хотите получить ответы, сделайте это легко, чтобы мы могли понять и ответить на ваши вопросы. Не ленитесь за наш счет, потому что тогда мы тоже будем лениться и игнорировать ваш вопрос.

Теперь, поскольку я понимаю ваш вопрос, вы не можете. x - локальная переменная, объявленная внутри функции. Это не видно нигде.

+0

ok sir Извините, я сделаю то же самое, что сказал вам ... спасибо за наш ответ – NoviceToDotNet

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