Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248

Приведение типов - пояснить код

30.04.2015, 17:01. Показов 1231. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Просветите пожалуйста по такому вопросу.
C#
1
2
3
4
5
6
7
8
static void Main(string[] args)
        {
            DbProviderFactory dpf = DbProviderFactories.GetFactory("System.Data.SqlClient");
            DbConnection connect = dpf.CreateConnection();
            connect.ConnectionString = "Data Source=192.168.130.130;Initial Catalog=AutoLot1;Persist Security Info=True;User ID=Администратор;Password=blabla";
            connect.Open();
            Console.WriteLine(((System.Data.SqlClient.SqlConnection)connect).ServerVersion); //Почему оно работает ??
        }
Нашел в книге вот такой пример (см. выше) не могу понять почему последняя строчка кода работает. Ведь здесь идет приведение типа DbConnection к типу SqlConnection, который (SqlConnection) выше по иерархии наследования. То есть по идее должна быть ошибка компиляции и приведение такое не допустимо, но все работает. Почему ?? Насколько мне понятно, то нельзя привести тип выше по иерархии к типу ниже.
Спасибо
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2015, 17:01
Ответы с готовыми решениями:

Приведение данных различных типов к String
Добрый день, у меня возникла проблема приведения данных, я получаю данные с базы использую след конструкцию: ...

Приведение типов
Здравствуйте, дамы и господа, наверное я совсем чего-то не понимаю, но вот такой элементарный код выводит: "Не удалось привести...

приведение типов в c#
Всем привет, помогите, пожалуйста, с проблемой. var Number = RationalNumber.GetParserBy(number); // получим объект Classic or...

4
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
30.04.2015, 17:11
Цитата Сообщение от bazyzy Посмотреть сообщение
Почему ??
т.к. dpf.CreateConnection(); вернет объект типа System.Data.SqlClient.SqlConnection
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
30.04.2015, 17:44
Лучший ответ Сообщение было отмечено bazyzy как решение

Решение

Цитата Сообщение от bazyzy Посмотреть сообщение
здесь идет приведение типа DbConnection к типу SqlConnection, который (SqlConnection) выше по иерархии наследования.
DbConnection является SqlConnection — все норм.

Цитата Сообщение от bazyzy Посмотреть сообщение
То есть по идее должна быть ошибка компиляции и приведение такое не допустимо
Почему? object выше по иерархии, чем string, однако такая строчка вас вряд ли удивит:
C#
1
2
string s = "hello";
object o = s;
1
9 / 9 / 0
Регистрация: 27.01.2013
Сообщений: 248
30.04.2015, 17:56  [ТС]
Спасибо всем за ответы. Теперь разобрался. Насчет выше/гиже иерархии - это я не так выразился как хотел. А пытался я сказать наоборот )))
что string нельзя привести к object
string s = o -ошибка
o = s веригуд
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
30.04.2015, 21:08
Цитата Сообщение от bazyzy Посмотреть сообщение
А пытался я сказать наоборот
А, ну я тоже хорош — не посмотрел, что SqlConnection наследуется от DbConnection, а не наоборот

Тогда на вашем же контр-примере:
C#
1
2
string s = o; // ошибка
string s = (string)o; // Нет ошибки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2015, 21:08
Помогаю со студенческими работами здесь

Приведение типов в C#
Как считанную из реестра информацию о шрифте присвоить объекту textBox1.Font? Приведение типов такого вида (Font)o (o- объект типа Object)...

Out параметр и приведение типов
Есть метод SomeEnum swError; Object oldObject = ..... Object newObject = GetObject(oldObject, out swError /*можно ли сделать...

ChangeType, dynamic и приведение типов
Здравствуйте. У меня есть 3 типа данных(разновидности int) - short, long, обычный int. Есть множество переменных приведённых выше типов,...

шаблоны, обобщения, приведение типов
недавно столкнулся с интересной проблемой, с виду элементарная программа которую требовалось переписать с С++ на С#, вот пример кода: ...

Приведение типов при десериализации класса
Помогите пожалуйста разобраться в стопорной проблеме! Я использую BinaryFormatter для сериализации класса MySerialClass (класс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru