C# явное преобразование типа (CAST) [Duplicate]C#

Место общения программистов C#
Ответить
Anonymous
 C# явное преобразование типа (CAST) [Duplicate]

Сообщение Anonymous »

Я понимаю, что C# требует, чтобы я использовал выражение актерского выражения, когда требуется преобразование из базового класса в производный класс («Уничтожение»: отбрасывайте менее производный тип в более производный тип): < /p>

Код: Выделить всё

class Base { }

class Derived : Base { }

class Program
{
static void Main()
{
Derived derived = (Derived)new Base();
}
}
< /code>
Хотя я могу представить, что тип в скобках в правой стороне символа равных может быть изменен в некоторой степени при использовании типов значений (например, при использовании численных базовых типов) я не вижу никакого использования в выражении литта в коде, как выше: тип переменного (в моем случае, полученные) всегда должен совпадать с типом внутри академирования; По крайней мере, я не нашел никакого способа сделать оба разных, не получая ошибки в моей ide. < /p>
Почему мой код не может выглядеть так: < /p>
class Base { }

class Derived : Base { }

class Program
{
static void Main()
{
Derived derived = new Base();
}
}
Это было бы неявным преобразованием. Но так как - по крайней мере, для меня это выглядит так - кажется, существует лишь единственное возможное преобразование (та, где комбинация типа переменной и содержания выражения актеров точно соответствует), то, зачем выражать выражение не может быть опущено? Может ли кто -нибудь, пожалуйста, подробно объяснить мне, почему «папорт» всегда «безопасно», в то время как «смягчение» требует выражения (для эталонных типов)?

Подробнее здесь: https://stackoverflow.com/questions/797 ... rsion-cast
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»