108 lines
6.7 KiB
HTML
108 lines
6.7 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
||
<title></title>
|
||
<link rel="StyleSheet" href="../default.css">
|
||
</head>
|
||
|
||
<body>
|
||
<H1>Отличия языка PascalABC.NET от Delphi</H1>
|
||
<h3>Добавлено</h3>
|
||
<ol>
|
||
<li>Операции <code>+=</code> <code>-=</code> для событий .NET и для процедурных
|
||
переменных.</li>
|
||
<li>Операции <code>+=</code> <code>-=</code> <code>*=</code> для целых и
|
||
<code>+=</code> <code>-=</code> <code>*=</code> <code>/=</code>
|
||
для вещественных.</li>
|
||
<li>Операция <code>+=</code> для строк.</li>
|
||
<li>Подпрограммы с переменным числом параметров.</li>
|
||
<li>Операция <b> <code>new</code></b> для вызова конструктора (<code>ident := new type_name(params);</code>).</li>
|
||
<li>Операция <b> <code>new</code></b> для создания динамического массива. </li>
|
||
<li>Операция <code><b>typeof</b></code> .</li>
|
||
<li>Использование <code><b>uses</b></code> для
|
||
подключения пространств имен .NET (<span lang="ru">реализовано в </span>
|
||
Delphi Prism).</li>
|
||
<li>Вид доступа <code><b>internal</b></code> (наряду с <code><b>public</b></code>,
|
||
<code><b>private</b></code>, <code><b>protected</b></code>).</li>
|
||
<li>Инициализация переменных: <code><b>var</b> a: integer :=
|
||
1</code>;</li>
|
||
<li>Инициализация переменных: <code><b>var</b> a :=
|
||
1</code>;</li>
|
||
<li>Объявление локальных переменных в блоке.</li>
|
||
<li>Объявление параметра цикла в заголовке цикла: <code><b>for</b> <b>var</b>
|
||
i := 1 <b>to</b> 10 <b>do</b></code>, <code><b>foreach</b>
|
||
<strong>var</strong> x <b>in</b> a <b>do</b></code>.</li>
|
||
<li>Оператор <code><b>lock</b></code>, обеспечивающий синхронизацию потоков.</li>
|
||
<li>Методы в записях.</li>
|
||
<li>Инициализаторы полей в классах и записях.</li>
|
||
<li>Обобщенные классы (generics).</li>
|
||
<li>Реализованы типизированные файлы (в отличие от
|
||
Delphi Prism, где они убраны).</li>
|
||
<li>Упрощенный синтаксис модулей.</li>
|
||
<li>Описание методов внутри интерфейса класса или записи.</li>
|
||
<li>Реализация записью интерфейса.</li>
|
||
<li><span lang="ru">Методы расширения.</span></li>
|
||
<li>Лямбда-выражения.</li>
|
||
</ol>
|
||
<h3>Изменено</h3>
|
||
<ol>
|
||
<li>Только сокращенное вычисление логических выражений.</li>
|
||
<li>Другой синтаксис <code><b>foreach</b></code>.</li>
|
||
<li>Интерфейсы <code><b>interface</b></code> в стиле .NET.</li>
|
||
<li>Другой синтаксис перегрузки операций.</li>
|
||
<li>Статические методы классов вместо классовых методов. Отсутствие типа
|
||
<code>TClass</code>.</li>
|
||
<li>Деструкторы оставлены лишь для совместимости и не выполняют никаких
|
||
действий.</li>
|
||
<li>Тип <code>object</code> -
|
||
синоним <code>System.Object</code>.</li>
|
||
<li>Тип <code>exception</code> -
|
||
синоним <code>System.Exception</code>.</li>
|
||
<li>Индексация <code>string</code> с 1, директива переключения на индексацию с 0.</li>
|
||
<li>Процедура <code>Write</code>
|
||
выводит любые типы.</li>
|
||
<li>Структурная эквивалентность типов для процедурных переменных, динамических массивов,
|
||
типизированных указателей и
|
||
множеств (в Delphi Object
|
||
Pascal - именная эквивалентность типов за исключением открытых
|
||
массивов).</li>
|
||
<li>Множества на базе произвольных типов (<code><b>set</b> <b>of</b>
|
||
string</code>).</li>
|
||
<li>Запрет использования указателей на управляемую память.</li>
|
||
<li>Процедурные переменные (делегаты) вместо <code><b>procedure of</b>
|
||
object</code>.</li>
|
||
<li>С бестиповыми файлами <b><code>file</code></b>
|
||
можно работать с помощью процедур <code>Read</code>,
|
||
<code>Write</code>.</li>
|
||
<li>Массивы массивов отличаются по типу от двумерных массивов (в частности,
|
||
записи <code>a[i][j]</code> и <code>a[i,j]</code> неэквивалентны).</li>
|
||
<li>Перегрузка выполняется без ключевого слова <b> <code>overload</code></b>.</li>
|
||
<li>Все конструкторы имеют имя <code>Create</code>.</li>
|
||
<li>Автоматическое управление памятью с помощью сборщика мусора (за
|
||
исключением указателей на неуправляемую память).</li>
|
||
</ol>
|
||
<h3>Отсутствует</h3>
|
||
<ol>
|
||
<li>Ключевые слова и директивы <code><b>packed threadvar inline asm exports unsafe resourcestring dispinterface in out absolute dynamic
|
||
local platform requires export message resident assembler safecall
|
||
automated far near stdcall cdecl published stored contains implements
|
||
varargs default deprecated package register dispid pascal writeonly</b></code>
|
||
и связанные с ними возможности.</li>
|
||
<li>Приведение типов для переменных: <code>Char(b)</code>
|
||
<code>:=</code> <code>'d'</code>.</li>
|
||
<li>Возможность присвоить адрес подпрограммы указателю <code>pointer</code>.</li>
|
||
<li>Записи с вариантами.</li>
|
||
<li>Строки <code>PChar</code>.</li>
|
||
<li>Возможность использовать операцию <code>@</code> для процедурных переменных.</li>
|
||
<li>Вариантные типы.</li>
|
||
<li>Бестиповые параметры (<code><b>var</b> a; <b>
|
||
const</b> b</code>).</li>
|
||
<li>Открытые массивы (не путать с динамическими!).</li>
|
||
<li>Методы, связанные с сообщениями (<code><b>message</b></code>).</li>
|
||
<li>Вложенные определения классов.</li>
|
||
</ol>
|
||
</body>
|
||
|
||
</html>
|