Объявление экземпляра класса и его инициализация - PullRequest
0 голосов
/ 14 октября 2010

Если я создам переменную с типом класса, каково фактическое значение, с которым я ее инициализирую?Я имею в виду - int инициализируется значением того типа, который является числом.Но с точки зрения технической точности, что произойдет, когда я создам новый экземпляр класса?

class a
{
}
class b
{
  a InstanceOfA;
    InstanceOfA=new ();  //which what I initialize the variable?
}

Надеюсь, вы получите мою точку зрения, спасибо

Ответы [ 4 ]

3 голосов
/ 14 октября 2010

Вы хотите создать новый экземпляр класса a.Вот пример с переименованными классами для облегчения чтения.

class MyClassA {
}

class MyClassB {
    MyClassA a = new MyClassA();
}

Если вашему классу a требуется некоторая инициализация, реализуйте для него конструктор:

class MyClassA {
    public MyClassA() {
        // this constructor has no parameters
        Initialize();
    }

    public MyClassA(int theValue) {
         // another constructor, but this one takes a value
         Initialize(theValue);
    }
}

class MyClassB {
    MyClassA a = new MyClassA(42);
}
0 голосов
/ 14 октября 2010

Переменные-члены класса инициализируются значением по умолчанию их типа. Для ссылочного типа это означает, что он инициализирован как null.

Чтобы создать экземпляр класса, вы просто используете имя класса:

InstanceOfA = new a();
0 голосов
/ 14 октября 2010

Вы, вероятно, после чего-то вроде этого:

public class A
{
}

public class B
{
    public static void Main(string[] args)
    {
      // Here you're declaring a variable named "a" of type A - it's uninitialized.
      A a;
      // Here you're invoking the default constructor of A - it's now initialized.
      a = new A();
    }
}
0 голосов
/ 14 октября 2010

Я не уверен, что получил то, о чем вы спрашиваете, но если я получил -
Когда вы инициализируете класс, ему присваивается имя, это ссылочный адрес.
Поэтому, когда вы пишете

InstanceOfA = new a();

InstanceOfA получает адрес в памяти (в куче ..) для объекта типа a.

...