|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Привет Как заставить компилятор выдавать ошибку в том случае если используется тип описанный одним enum а сравнивается другой Что то типа enum one a=0 b=1 c=2 end enum enum two d=0 e=1 f=2 end enum dim test as one if one=two.d Вот тут хочу чтобы компилятор ругался ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2014, 17:32 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Alexander_fx, крайне странное поведение. Спецификация утверждает, что при Option Strict On разрешены только неявные widening преобразования типов, а преобразование из одного enum в другой является narrowing преобразованием: The set of implicit conversions depends on the compilation environment and the Option Strict statement. If strict semantics are being used, only widening conversions may occur implicitly. If permissive semantics are being used, all widening and narrowing conversions (in other words, all conversions) may occur implicitly. Narrowing Conversions .... From a numeric type to an enumerated type. From an enumerated type to a numeric type its underlying numeric type has a narrowing conversion to. From an enumerated type to another enumerated type. Лично мне тоже интересно понять почему компилятор себя так ведет. Кстати dotPeek показал просто сравнение переменных. Надо еще на уровне IL кода посмотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 03:04 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
bazileЛично мне тоже интересно понять почему компилятор себя так ведет. Кстати dotPeek показал просто сравнение переменных. Надо еще на уровне IL кода посмотреть. В бейсике же есть автоматическое приведение типов. Может это оно срабатывает? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 12:36 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Alexander_fx Код: vbnet 1. 2.
А почему у вас "test" - нигде не используется? В примере? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 12:44 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Alexander_fx, До меня дошло. в проверке условия (оно, кстати, никогда не будет истинным) вы проверяете, равен ли тип One типу Integer. :-) В шарпе очень даже ругается компилятор. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 12:47 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
D129, вот код сообщение выскакивает и компилятор не ругается Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 13:08 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Alexander_fx, Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
А в шарпе - ругается. Пишите на том, что вам в данный момент нужно. :-) Бейсик очень вольно обращается с типами. Взял и преобразовал - и не сказал. Попробуйте перевернуть условие - ради эксперимента.... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 13:52 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Alexander_fx, Вообще-то, сторого говоря, сравнивать значения разных перечислений - это только шутки ради можно... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 13:57 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 14:00 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
D129 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
так я понимаю в шарпе тут ругается вот я и думаю какая настройка среды отвечает за это ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 14:16 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
Alexander_fxтак я понимаю в шарпе тут ругается вот я и думаю какая настройка среды отвечает за это Синтаксический сахар бейсика. Сомневаюсь, что это можно настроить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 14:21 |
|
Почему Option Strict не ругается на разные Enum
|
|||
---|---|---|---|
#18+
D129В бейсике же есть автоматическое приведение типов. Может это оно срабатывает? Неявное приведение типов не должно работать в данном случае т.к. Option Strict включена. D129Вообще-то, сторого говоря, сравнивать значения разных перечислений - это только шутки ради можно... Разумеется, но если бы я случайно написал такое сравнение, то ожидал бы ошибку компиляции. В данном случае её не будет, а будет, похоже, сравнение значений. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2014, 19:02 |
|
|
start [/forum/topic.php?fid=20&msg=38671133&tid=1402803]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 324ms |
total: | 470ms |
0 / 0 |