|
c# преобразование типов
|
|||
---|---|---|---|
#18+
sphinx_mv, Что такое "метод компилятора"? Чем лучше мне будет лучше обратиться " к преобразованию родительского типа к дочернему в Вашем примере..." ? Полагаешь , что я не различаю приведения вверх и вниз? Тогда ты - херовый ясновидящий ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 14:11 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
Изопропили какой метод вызывается?Никакого. Но используется инструкция "castclass" которая пытается привести а к B . А если сделать всё по правильному: Код: c# 1.
То вообще никакого преобразования не происходит. (точнее, происходит, но мы его не видим) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 14:11 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
enigmatic, независимо от направления преобразования, компилятор C# порождает одну IL инструкцию castclass ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 14:13 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
Изопропил, Мой рефлектор показывает иное. А именно: Код: c# 1.
эквивалентно Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 14:19 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
И ildasm с ним солидарен. Код: c# 1. 2. 3. 4.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 14:24 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
enigmaticИзопропил, Мой рефлектор показывает иное. А именно: Код: c# 1.
эквивалентно Код: c# 1.
И это - правильно. Потому что преобразование из производного типа в базовый не требуется... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2012, 15:21 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
sphinx_mv, Преобразование есть, оно неявное. Но инструкций преобразования (conv.*, castclass) нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 07:50 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
enigmaticsphinx_mv, Преобразование есть, оно неявное.Да. Был не точен... :( Имел в виду приведение типов (ака, "явное преобразование") - оно действительно не требуется... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 12:08 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
Изопропилsphinx_mv, Что такое "метод компилятора"? Чем лучше мне будет лучше обратиться " к преобразованию родительского типа к дочернему в Вашем примере..." ? Полагаешь , что я не различаю приведения вверх и вниз?Я полагаю, что лучше меня по поводу явных преобразования неинициализированной переменной экземпляра базового класса в производный класс в Вашем примере выскажется компилятор (вызвав соответствующий метод вывода текста в окно сообщений/на консоль) - и примерный текст сообщения ошибки времени компиляции я предоставил. ИзопропилТогда ты - херовый ясновидящийА тут вобще нет необходимости быть каким-либо ясновидящим - просто читаем текст примера... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2012, 12:44 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
Можно у знать почему у меня не прокатывает вот так: Код: c# 1. 2.
а приходится записывать вот так: Код: c# 1. 2.
потому что пише что: Ошибка 1 Не удается неявно преобразовать тип "object" в "int". Существует явное преобразование (возможно, пропущено приведение типов) хотя в примерах кабы пишут что вроде можно http://msdn.microsoft.com/ru-ru/library/0k5w061k.aspx ; ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 09:37 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
потому что неявно object в int преобразовать нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 09:50 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
megazoid007хотя в примерах кабы пишут что вроде можно http://msdn.microsoft.com/ru-ru/library/0k5w061k.aspx ; Ты про это что ли? Код: c# 1.
так " new value" ведь не int, а string! В примерах конкатенацию делают. Неявное преобразование из object в string (т.е. сериализация объекта) и обратно - возможна. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 09:51 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
Charles WeylandНеявное преобразование из object в string (т.е. сериализация объекта) и обратно - возможна. Сериализацей называется преобразование объекта в поток байтов для хранения или передачи с возможностью последующего восстановления копии. К преобразованию типов это никак не относится. object в string преобразуется если в нём хранится string или делается неявный вызов ToString(). В случае с rowView["CompanyName"] += " new value"; никакого преобразования нет. Компилятор всего лишь генерирует вызов метода String.Concat(). Преообразование string в object возможно т.к. существует и разрешено неявное преобразование от дочернего класса к базовому. А т.к. System.Object является базовым для всех типов в .NET, то к нему можно преобразовать что угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 11:32 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
bazile, а если я сделаю что то вроде SqlDataAdapter.FillSchema, то упрощенный (второй) вариант присваивания может сработать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 15:27 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
megazoid007, не вижу связи между вызовом какого-то метода и последующим присваиванием. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 16:17 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
bazile, ну эта функция настраивает схему в соответствии с источником данных, т.е. среде уже будет известно что столбец drvTemp["Код"] типа int ну и наверно приведет к нужному типу при присвоении ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 17:15 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
megazoid007, ты путаешь внутренние знания (времени исполнения) классов DataSet/DateView о типе данных в колонке с типом данных известных компилятору. Метод FillSchema будет, очевидно, выполнен во время работы программы. То есть после компиляции. Так что тип выражения drvTemp["Код"] как был object так и останется. Если тебе нужная строгая типизация на этапе компиляции, то используй типизированный DataSet или Entity Framework. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 17:57 |
|
c# преобразование типов
|
|||
---|---|---|---|
#18+
bazile, спасибо бро все понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 19:55 |
|
|
start [/forum/topic.php?fid=20&msg=38094912&tid=1404298]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 343ms |
total: | 523ms |
0 / 0 |