Главная страница
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.052 c
6-1265872619
Den
2010-02-11 10:16
2013.03.22
No route to host


15-1338898180
Owner111
2012-06-05 16:09
2013.03.22
LPVOID &amp; LPCVOID


15-1353577234
xayam
2012-11-22 13:40
2013.03.22
О пользе/вреде графика работы или "2 через 2" vs "пятидневка"


2-1336423671
efgen
2012-05-08 00:47
2013.03.22
Решение нелинейных уравнений в Delphi


3-1250742438
pushkin42
2009-08-20 08:27
2013.03.22
dbExpress не открывает личико...