Объясните пожалуйста оператор as в c#. Учил C++ и с него перешёл на C# для изучения Unity. Насколько я понимаю, то оператор as можно понимать как явное приведение типов.
Оператор as возвращает значение типа второго операнда, если преобразование типов возможно, или null, если невозможно. Этим он отличается от каста (MyClass)obj, который выбрасывает исключение, когда преобразование типов невозможно.
Например,
var m = someObj as MyClass;
Идентично:
MyClass m;
try
{
m = (MyClass)someObj;
}
catch (InvalidCastException ex)
{
m = null;
}
или же:
MyClass m;
if(someObj is MyClass)
{
m = (MyClass)someObj;
}
else
{
m = null;
}
Возможно, есть какие-то внутренние различия реализации, и, скорее всего, она ближе ко второму варианту, но суть думаю можно понять.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей