Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.048 c
1-1297432162
Gu
2011-02-11 16:49
2013.03.22
Доверие виндов


15-1331105582
alexdn
2012-03-07 11:33
2013.03.22
Бит торрент


2-1341990007
sas9568635
2012-07-11 11:00
2013.03.22
Получение кода нажатых клавиш формы запущенной как Form.Show


3-1281686301
Alekcey
2010-08-13 11:58
2013.03.22
Delphi7+DBGridEh+FireBird+IBDataSet


2-1329653243
Андрей З
2012-02-19 16:07
2013.03.22
Помогите))) как написать (создать) программу Firewall на windows?




   Наверх