Путаница в функциях C # и CLR, какую функцию стоит строго описать как функцию C #? - PullRequest
1 голос
/ 19 ноября 2008

Я должен написать пару слов о C #, вообще кусок пирога? Нет!

Я искал различные интернет-ресурсы и книги, и то, что я получил, было головной болью. Например, Сборщик мусора В некоторых источниках говорится, что это функция C #, в других - CLR получил эту функцию, а C # вместе со всеми другими языками .NET получил ее по умолчанию. Конечно, я голосую за CLR, но есть много других вещей, которые вызывают путаницу, например избегание явных преобразований кода . Может быть, у меня плохие книги и ресурсы ... так что, может быть, кто-то предложит место, где ясно сказано о C #

Во-вторых, это происхождение синтаксиса C #, опять-таки несколько вариантов и ничего не понятно, другие языковые комбо друг друга. C, C ++, Java, это нормально, но VB6 и Delphi, у меня есть сомнения. И снова, происхождение этих языков смешивается с c #, но на самом деле неясно, является ли это C # или функцией CLR

MTH

Ответы [ 5 ]

6 голосов
/ 19 ноября 2008

GC предоставляется CLR

C # - это все, что указано в спецификации языка, и не более.

Некоторые из наиболее интересных вещей, которые на самом деле являются функциями C #:

  • блоки итераторов [доходность]
  • анонимные методы / замыкания / лямбды [синтаксис, не путать с деревьями выражений]

Но все, что относится к вводимому вами коду, но не предоставляется непосредственно CLR или инфраструктурой, является языковой функцией. Конечно, и другие языки могут их реализовывать ...

  • используя [try / finally / Dispose]
  • блокировка [Monitor.Enter / try / finally / Monitor.Exit]
  • foreach [GetEnumerator () / while / [Dispose]]
  • метод расширения разрешения
  • синтаксис запроса ["где pred" для .Where (x => pred) и т. Д.]

(это, конечно, лишь несколько примеров; и опять же, другие языки могут предоставить эти функции!)

3 голосов
/ 19 ноября 2008

Сам GC является функцией CLR, но язык C # предполагает, что он работает на платформе со сборкой мусора - без определения точной семантики.

Трудно точно определить, но практическое правило гласит: «если это хорошо определено в спецификации языка, это функция C #».

Если бы вы могли привести еще несколько примеров функций для категоризации («избегать явных преобразований кода» - это не языковая функция, если вы не хотите давать больше подробностей), это помогло бы.

0 голосов
/ 20 ноября 2008

Во-вторых, это происхождение синтаксиса C #, опять-таки несколько вариантов и ничего не понятно, другие языковые комбо друг друга. C, c ++, Java, это нормально, но VB6 и Delphi,

Вещи C #, полученные от VB:

  • Свойства
  • События
  • Петли For-Each
  • Модули, объявленные как "статический класс" в C #
  • Использование свойств по умолчанию, чтобы класс работал как массив
  • Позднее связывание (C # 4)
  • Проверка целочисленного переполнения (C, C ++ и Java не могут обнаружить, когда вы переполняете целое число)
  • P / Invoke для вызова C ++ dll

В некотором смысле необязательные параметры (C # 4), но на самом деле это из COM.

0 голосов
/ 19 ноября 2008

Вы можете специфицировать язык C #. Вот ссылки:

  1. Спецификация C # (MSDN)
  2. Стандартная спецификация языка ECMA-334 C #
0 голосов
/ 19 ноября 2008

CLR - это платформа разработки, среда выполнения, поддерживающая управляемый код, написанный на одном из языков .NET, одним из которых является C #. Сборка мусора является функцией CLR. Как и Code Access Security и Just In Time компиляция вашего управляемого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...