Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 349 350 [351] 352 353 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#5251
,
|
|
|
|
Чем угодно, что захотелось программисту. Цитата korvin @ у да. представление объекта в виде строки -- это object.toString() например, но никак не typeof(Object). но при чем тут представление объекта в виде строки? T там -- это тип, а не объект. Потому что выводится на печать. Вообще говоря, когда в write подается просто объект, ожидается, что будет именно ToString. А тут пример вывода названия типа объекта, поэтому typeof. А функция или метод объекта - разницы не вижу. Цитата korvin @ в том, что как и жабке в этом Oxygen не смогли реализовать нормально типы как объекты. а сравниватся и значения и типы должны одинаково Это как? Допустим, есть у нас integer, две переменных, со значениями 1 и 2. Если сравнивать типы - они равны, а если значения - то нет. Как ты обозначишь, что именно сравнивается? |
|
Сообщ.
#5252
,
|
|
|
|
Цитата korvin @ именно наименование -- это и есть T.Name (Integer.Name) или T.FullName или T.RealName в зависимости от ситуации. а чем по-вашему может быть T.Name? не, ну есть ССЗБшные языки, которые позволяют переопределить методы метакласса, но никто же не заставляет следовать по их стопам |
|
Сообщ.
#5253
,
|
|
|
|
Этот байткод позволяет скомпилить C++ со всеми его видами наследования. Но для взаимодействия с платформой в C++/CLI есть специальные типы, для которых доступно только одиночное наследование реализаций. Опять же для них есть не только дженерики, но и шаблоны. Естественно, для всех остальных языков видимы только дженерики, потому что .NET непосредственно не поддерживает шаблоны. |
|
Сообщ.
#5254
,
|
|
|
|
Цитата Romkin @ Потому что выводится на печать. Вообще говоря, когда в write подается просто объект, ожидается, что будет именно ToString. А тут пример вывода названия типа объекта, поэтому typeof. А функция или метод объекта - разницы не вижу. нет, тут не вывод типа объекта, вывод типа объекта там был бы например ![]() ![]() WriteLine(typeof(1)); // или var a : Integer = 1; WriteLine(typeof(a)); точнее конечно вывод типа объекта, но объектом там является тип, а тип типа -- метатип, т.е. должен быть выведен какой-нибудь "System.Type", причем для всех трех случаев. |
|
Сообщ.
#5255
,
|
|
|
|
Цитата MyNameIsIgor @ Этот байткод позволяет скомпилить C++ со всеми его видами наследования. Но для взаимодействия с платформой в C++/CLI есть специальные типы, для которых доступно только одиночное наследование реализаций. Я говорил о jvm Цитата korvin @ точнее конечно вывод типа объекта, но объектом там является тип Нет. Объектом там является экземпляр, не путайся. |
|
Сообщ.
#5256
,
|
|
|
|
korvin, не во всех языках есть явное понятие метатипа. И часто как метотип могут рассматриваться разные сущности. Это и статические/классовые методы и отдельный метатип(как в питоне) и даже дженерики/шаблоны.
|
|
Сообщ.
#5257
,
|
|
|
|
Цитата Romkin @ Это как? Допустим, есть у нас integer, две переменных, со значениями 1 и 2. Если сравнивать типы - они равны, а если значения - то нет. Как ты обозначишь, что именно сравнивается? в смысле? ![]() ![]() var a : Integer = 1; var b : Integer = 2; WriteLine( if a == b then "a == b" else "a /= b" ); // сравниваются значения WriteLine( if typeof(a) == typeof(b) then "a and b have same type" else "a and b have different types" ); // сравниваются типы ![]() ![]() var a : Type = Integer; var b : Type = Float; WriteLine( if a == b then "a == b" else "a /= b" ); что именно тебя смущает? |
|
Сообщ.
#5258
,
|
|
|
|
Цитата Romkin @ Я говорил о jvm Разве оно сильно отличается от .NET? Цитата Нет. Объектом там является экземпляр, не путайся. Там тоже две системы типов в одном языке? |
|
Сообщ.
#5259
,
|
|
|
|
Цитата Romkin @ Нет. Объектом там является экземпляр, не путайся. ты прикалываешься что ли? ![]() ![]() class method GenericMethodTest.DoSwap<T>(left, right : T); begin var a := left; var b := right; Console.WriteLine('Type: {0}', typeof(T)); Console.WriteLine('-> a = {0}, b = {1}', a , b); Swap<T>(var a, var b); Console.WriteLine('-> a = {0}, b = {1}', a , b); end; T -- это тип |
|
Сообщ.
#5260
,
|
|
|
|
Цитата korvin @ в смысле? Ну вот видишь, сам и написал typeof. Цитата korvin @ ты прикалываешься что ли? Экземпляр типа. Конкретного инстанцированного типа. И выводится именно что за тип, а не от чего он порожден. Вот было бы что-то вроде instanceof или inheritsfrom - тогда да. |
|
Сообщ.
#5261
,
|
|
|
|
Цитата D_KEY @ korvin, не во всех языках есть явное понятие метатипа. И часто как метотип могут рассматриваться разные сущности. Это и статические/классовые методы и отдельный метатип(как в питоне) и даже дженерики/шаблоны. ну да, явно -- далеко не во всех, тем более редко в статически-типизированных (я имею в виду как полноценную сущность языка). но неявно(статические/классовые методы и т.п.) в довольно многих современных. я не об этом, а о том, что из-за неполноценности реализаций часто становится невозможно выполнить какие-то тривиальные вещи =( Добавлено Цитата Romkin @ Ну вот видишь, сам и написал typeof. Экземпляр типа. Конкретного инстанцированного типа. И выводится именно что за тип, а не от чего он порожден. Вот было бы что-то вроде instanceof или inheritsfrom - тогда да. ты принципиально не понимаешь о чем речь? ты принципиально не видишь разницы между ![]() ![]() typeof(1); и ![]() ![]() typeof(Integer); ? Добавлено а, ну т.е. ![]() ![]() var a : Integer = 1; typeof(a); // => Integer; var T : Type = Integer; typeof(T); // => по-твоему должно вернуть Integer? |
|
Сообщ.
#5262
,
|
|
|
|
Цитата korvin @ ты принципиально не понимаешь о чем речь? ты принципиально не видишь разницы между Я то вижу. А вот ты не понимаешь, что приведенный тобой метод работает с конкретным типом. И нигде не сказано, что можно делать typeof(1). Хотя скорее всего делать можно, и в том и в другом случае должен выдать integer Это не instanceof. Выводится именно что за тип, а не чьим экземпляром он является.Просто кое-где начинается бродилово, с привлечением "суперметакласса" вроде type или подобного. |
|
Сообщ.
#5263
,
|
|
|
|
ну вот это я и называю недоделкой
Добавлено Цитата Romkin @ приведенный тобой метод работает с конкретным типом. я-то понимаю, но что это меняет? тем более необходимость в typeof отсутствует. особенно, если она, как ты говоришь, просто функция. вот, кстати, и покажи реализацию этой функции |
|
Сообщ.
#5264
,
|
|
|
|
Цитата korvin @ тем более необходимость в typeof отсутствует. особенно, если она, как ты говоришь, просто функция. вот, кстати, и покажи реализацию этой функции У меня нет Prism, есть только Delphi. Необходимость в typeof есть, поскольку тип тоже объект, надо указать что ты от него хочешь. |
|
Сообщ.
#5265
,
|
|
|
|
Цитата Romkin @ У меня нет Prism, есть только Delphi. Необходимость в typeof есть, поскольку тип тоже объект, надо указать что ты от него хочешь. из приведенного в вике примера вывода программы ясно следует, что "я" хочу получить полное имя типа |