Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.065 c
15-1349867018
stas
2012-10-10 15:03
2013.03.22
Изменить charset


15-1339062999
alex3038
2012-06-07 13:56
2013.03.22
Ищу компоненты для работы с направленными графами


15-1350567983
ES
2012-10-18 17:46
2013.03.22
Кодировка в XML (движок msxml)


15-1340687560
AV
2012-06-26 09:12
2013.03.22
Что то пропустил, как так можно делать?


15-1339736544
AV
2012-06-15 09:02
2013.03.22
с одной стороны - в отпуске. С другой - все неправильно





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский