Дженерики в VB.NET

Теперь, как программист C#, я знаю, что дженерики являются потрясающими. Однако при баловании некоторым VB.NET, я обнаружил, что следующее не вызывает ошибку компилятора:

Dim instance As List(Of Integer)
instance.Add(True)

Почему это? Я знаю, что Вы не требуетесь бросить в VB.NET, но я думал бы, что это уничтожает главную причину использовать дженерики - безопасность типов.

Править: У меня нет опции строгой на, поскольку это не было реальным осуществлением программирования, просто меня взглянувший на VB.NET в теории. Это - теоретический вопрос, поскольку я ожидал, что это вызовет ошибку компилятора даже с опцией, строгой прочь, так же, как функция универсальных типов.

6
задан Fiona - myaccessible.website 8 February 2010 в 14:28
поделиться

3 ответа

Без Option Strict On , VB.NET может неявно преобразовать логическое в целое . Я настоятельно рекомендую (особенно исходя из опыта работы с C #) сделать Option Strict On значением по умолчанию для вашей работы на VB.NET.

Это можно сделать в Visual Studio в Инструменты | Параметры | Проекты и решения | Настройки VB по умолчанию .

отредактируйте , чтобы узнать больше о «расслабленном» отношении VB (классический) к преобразованию типов, погуглите «Принуждение злого типа». Тем из нас, кто стремился хорошо поработать в VB (классическом), приходилось бороться с этим демоном некоторое время ...

10
ответ дан 8 December 2019 в 18:35
поделиться

У вас есть Option Strict включен?

3
ответ дан 8 December 2019 в 18:35
поделиться

VB.NET преобразует в месте вызова функции. В List(of Integer) по-прежнему хранится целое число (-1, которое является целочисленным значением True)

0
ответ дан 8 December 2019 в 18:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: