Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 Re: строки на стеке  [new]
Arioch
Member

Откуда:
Сообщений: 10598
_Vasilisk_
и значение var/out параметров не определены?


как минимум частично они определены: если они managed-типов, то мусора в них быть не может вообще никогда, даже при исключениях
14 мар 19, 14:22    [21832604]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
ziv-2014
Member

Откуда:
Сообщений: 235
_Vasilisk_, в си-шарпе вы не сможете откомпилировать программу, пока не инициализируете out параметр.
14 мар 19, 14:23    [21832605]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
Arioch
Member

Откуда:
Сообщений: 10598
ziv-2014
out минимум надо инициализировать.


кроме того, ты вроде спорил не про надо/не надо а про то, где это делать, внутри функции или снаружи
14 мар 19, 14:24    [21832607]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
Arioch
Member

Откуда:
Сообщений: 10598
ziv-2014
_Vasilisk_, в си-шарпе вы не сможете откомпилировать программу, пока не инициализируете out параметр.


с неинициализированной локальной переменнйо можно скомпилировать?

int i;

switch(j) {
  case 0: i = 1; break;
  case 1: i = 2; break;
  case 2: i = 3; break;
  case 3: i = 4; break;
};

i = i + 1;


вот такого рода код в шарпе по умолчанию скомпилируется или нафиг пошлёт ?
14 мар 19, 14:26    [21832614]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
Arioch
Member

Откуда:
Сообщений: 10598
ziv-2014
В Delphi да не всегда соблюдается - но как это считать, багом или фичей вот вопрос?


Судя по всему - обратной совместимостью.
Частный случай использования неинициализированной переменной.
Которая в Turbo Pascal не запрещалась.
И в Delphi по умолчанию - Warning а не Error (хотя я, затрахавшись ловить ошибки, перевёл в Error).

В XE2 детектор часто даёт false positive, туповат он, приходится делать холостое присваивание.

А в новых версиях гвоорят вообще пц - 21830333
14 мар 19, 14:32    [21832626]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
ziv-2014
Member

Откуда:
Сообщений: 235
Arioch,
Ошибка использование локальной переменной, которой не присвоено значение
14 мар 19, 14:33    [21832630]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
ziv-2014
Member

Откуда:
Сообщений: 235
Arioch
ziv-2014
В Delphi да не всегда соблюдается - но как это считать, багом или фичей вот вопрос?


Судя по всему - обратной совместимостью.
21830333

Вот и я решил, что это фича, но в контексте interface это конечно ошибка. Поэтому всегда стараюсь использовать var и инициализацию.
14 мар 19, 14:40    [21832641]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
Arioch
Member

Откуда:
Сообщений: 10598
ziv-2014
Ошибка использование локальной переменной, которой не присвоено значение


Это хорошо.

А однократно-присваиваемые переменный в C# есть?

т.е. вместо assignment - binding
14 мар 19, 16:08    [21832775]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
Arioch
Member

Откуда:
Сообщений: 10598
ziv-2014
но в контексте interface это конечно ошибка


я предпочитаю в интерфейсе выражать, что я хочу получить, даже если компилятор это не enforsing

так что я за out :-)
14 мар 19, 16:12    [21832780]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
ziv-2014
Member

Откуда:
Сообщений: 235
Arioch
А однократно-присваиваемые переменный в C# есть?

Не понял тебя? Есть переменные read only. Создал указатель, поменять уже нельзя.
14 мар 19, 16:20    [21832790]     Ответить | Цитировать Сообщить модератору
 Re: строки на стеке  [new]
Arioch
Member

Откуда:
Сообщений: 10598
https://stackoverflow.com/questions/443687/why-does-c-sharp-disallow-readonly-local-variables

disallow....


https://www.c-sharpcorner.com/UploadFile/0c1bb2/read-only-and-constant-in-C-Sharp/
Readonly can be declared only at class level not inside the method.
Readonly can not be declared using static keyword because they are by default static.


Пичалько. Вещь хорошая, но что-то её слишком сильно урезали...
14 мар 19, 16:38    [21832812]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Delphi Ответить