Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.091 c
2-1343342978
tggbg
2012-07-27 02:49
2013.03.22
Tlist запись и загрузка из файла


15-1339221071
MBo
2012-06-09 09:51
2013.03.22
Не бриться!


15-1342444836
картман
2012-07-16 17:20
2013.03.22
точка пересечения двух графиков


4-1258536064
mambo
2009-11-18 12:21
2013.03.22
Градиентный прогрес в отдельном потоке


15-1338131036
ProgRAMmer Dimonych
2012-05-27 19:03
2013.03.22
HP Photosmart B110b и чёрный картридж