Четверг, 10 Октября 2024, 07:42

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Приведение типов
KiraДата: Воскресенье, 18 Ноября 2012, 13:37 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Есть парочка вопросов, про явное приведение типов.
При явном приведении из одного типа в другой.
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
как тогда не потеряются данные.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн


Сообщение отредактировал Kira - Воскресенье, 18 Ноября 2012, 13:54
divol13Дата: Воскресенье, 18 Ноября 2012, 23:40 | Сообщение # 2
участник
Сейчас нет на сайте
Quote (Kira)
Нужно ли/можно ли переопределять или перегружать данную функцию.(приведения типа)

если мне не изменяет память, то можно перегружать Implicit/Explicit

Quote (Kira)
что является базовым,а что производным?

производные потому и зовутся производными, из-за того что произвошли от базового класса.

Quote (Kira)
Зачем здесь приведение?

да можно вроде и не приводитьесли тип динамический. (опять же если память мне не врет)


  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг