Есть парочка вопросов, про явное приведение типов.
При явном приведении из одного типа в другой.
Code
class Test
{
static void Main()
{
double x = 1234.7;
int a;
// Cast double to int.
a = (int)x;
System.Console.WriteLine(a);
}
}
// Output: 1234
Здесь значимые данные. К ним относятся структуры? Нужно ли/можно ли переопределять или перегружать данную функцию.(приведения типа). Или компилятор сам знает как.
Список разрешенных явных числовых преобразований, см. в разделе Таблица явных числовых преобразований (Справочник по C#).
Для ссылочных типов явное приведение необходимо, если нужно выполнить преобразование из базового типа в производный тип: (что является базовым,а что производным?)
C#Code
// Create a new derived type.
Giraffe g = new Giraffe();
// Implicit conversion to base type is safe.
Animal a = g;
// Explicit conversion is required to cast back
// to derived type. Note: This will compile but will
// throw an exception at run time if the right-side
// object is not in fact a Giraffe.
Giraffe g2 = (Giraffe) a;
Операция приведения между ссылочными типами не меняет тип времени выполнения базового объекта; меняется только тип значения, которое используется в качестве ссылки на этот объект.
Не совсем понятен механизм.
вот пару примеров:
public class kiSliceTexture : EditorWindow
kiSliceTexture kiWinMain =(kiSliceTexture)EditorWindow.GetWindow(typeof(kiSliceTexture),false,"Slice Textures");
EditorWindow.GetWindow()// Вернет тип EditorWindow
Зачем здесь приведение?
refTexture=(Texture2D)EditorGUILayout.ObjectField(refTexture,typeof(Texture2D),GUI.skin);
EditorGUILayout.ObjectField()// вернет тип Object
как тогда не потеряются данные.