Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизGeneric и неGeneric типы одинаковые в памяти? Найти похожие ветки
← →
Дмитрий С © (2012-09-05 19:57) [0]Например:
TA = array of array of Double;
TB<T> = array of array of T;
TC = TB<Double>;
TA и TС будут одинаковыми?
Можно ли их приводить друг к другу?
Например:
procedure Foo<T>(Bar:TB<T>);
begin
...
end;
...
var
A: TA;
...
// Так можно?
Foo<Double>(TB<Double>(A));
Компилятор не ругается, а будет ли всегда правильно работать?
← →
Развертка (2012-09-05 20:07) [1]
> Компилятор не ругается
Ви мене обманюєте…
procedure Foo<T>(Bar:TB<T>): [DCC Error] Project1.dpr(15): E2530 Type parameters not allowed on global procedure or function
← →
Дмитрий С © (2012-09-05 20:11) [2]
> Развертка (05.09.12 20:07) [1]
Пардон. Не думал что есть разница. Представим что Foo метод класса.
← →
Давайте будем жрать! (2012-09-05 20:17) [3]
> Не думал что есть разница
Есть. Более того, procedure Foo(Bar:TB<T>) объявлять низя, а procedure Foo<T>(Bar:TC) — можно.
По теме же — насколько я знаю, TA и TC полностью равноправны (хотя, например, C := A не удастся, но генерики тут ни при чём).
← →
Дмитрий С © (2012-09-05 20:19) [4]
> C := A
А
C := TC<Double>(A ); - такое удастся? И работать ожидаемо будет?
← →
Давайте будем жрать! (2012-09-05 20:25) [5]
> TC<Double>
Так не бывает :-)
> такое удастся? И работать ожидаемо будет?
Удастся. Будет. Но лучше так не делать. Во избежание самовозгорания.
ЗЫ. Естественно, всё сказанное в этой теме не относится к соседней теме про TList & TList<T>.
← →
_oxffff (2012-09-05 21:55) [6]Все зависит от правил структурной или именно эквивалентности
Смотри здесь
http://www.scribd.com/doc/85868676/97/Generic-Types-Compatibility-Rules
← →
_oxffff (2012-09-05 21:55) [7]
> именно эквивалентности
именной эквивалентности
← →
Дмитрий С © (2012-09-06 12:07) [8]
> _oxffff (05.09.12 21:55) [6]
Там написано почему компилятор ругается. Но не сказано можно ли выполнять приведение.
← →
_oxffff (2012-09-06 14:17) [9]
> Дмитрий С © (06.09.12 12:07) [8]
Можно, если типы идентичны, и нельзя если типы не идентичны.
← →
pasha_golub © (2012-09-06 23:35) [10]Давайте будем жрать!
Мущщина! я не взнаю вас у гриме! Давайте будем знакомы. И плеваться як нормальные люди. Вы, таки, изрыгаете умные мысли, а я не могу похвастаться своей тете Ксюше, шо знаю такого розумного поца. Якшо ваша ласка, то черканите мене какую-то мессагу, та я не буду изводиться на гуано, бо в наших краях я, таки, не смогу конкурировать с местными колхозами.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.135 c