Главная страница
    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.46 MB
Время: 0.094 c
2-1336042324
Vik
2012-05-03 14:52
2013.03.22
Incompatible types: String and Integer


15-1341693003
Юрий
2012-07-08 00:30
2013.03.22
С днем рождения ! 8 июля 2012 воскресенье


2-1343328927
Alez
2012-07-26 22:55
2013.03.22
Microsoft OneNote


15-1349382603
Юрий
2012-10-05 00:30
2013.03.22
С днем рождения ! 5 октября 2012 пятница


2-1335162233
jacksotnik
2012-04-23 10:23
2013.03.22
DBComboBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский