ссылочные типы - новое ключевое слово для создания его значения - PullRequest
1 голос
/ 24 января 2011

Я полагаю, что некоторая литература не точна (возможно, даже содержит ошибки) или это моя вина? Книга, которую я сейчас читаю, говорит (перевод):

Чтобы создать значение ссылочного типа, необходимо использовать новое ключевое слово.

Я так не думаю - а как же делегаты? Я прав или я плохо понимаю этот текст?

Ответы [ 3 ]

2 голосов
/ 24 января 2011

Ну, это не всегда будет правдой, нет.Некоторые примеры:

  • Конкатенация строк
  • Преобразования делегатов
  • Конверсионные преобразования

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

1 голос
/ 24 января 2011

Делегаты также неявно создаются с новым ключевым словом. За кулисами компилятор генерирует необходимый код для вас. Итак

MyEvent += SomeMethod;

становится

MyEvent += new EventHandler(someInstance, SomeMethod);

но это правда, не каждый раз, когда создается ссылочный тип, нужен оператор new. как бокс.

0 голосов
/ 24 января 2011

Делегаты - это ссылки на функцию, и, как вы, вероятно, знаете, вы не используете ключевое слово "new" при объявлении функции.

, но вы используете его при объявлении объекта, например:

MyObject obj = new MyObject();
...