Есть парочка вопросов, про явное приведение типов. 
 При явном приведении из одного типа в другой. 
 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 
 как тогда не потеряются данные.