Binder.ChangeType(Object, Type, CultureInfo) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Меняет тип заданного Object
на заданный Type
.
public:
abstract System::Object ^ ChangeType(System::Object ^ value, Type ^ type, System::Globalization::CultureInfo ^ culture);
public abstract object ChangeType (object value, Type type, System.Globalization.CultureInfo? culture);
public abstract object ChangeType (object value, Type type, System.Globalization.CultureInfo culture);
abstract member ChangeType : obj * Type * System.Globalization.CultureInfo -> obj
Public MustOverride Function ChangeType (value As Object, type As Type, culture As CultureInfo) As Object
Параметры
- value
- Object
Объект, для которого должен быть изменен параметр Type
.
- type
- Type
Новый параметр Type
, к которому будет приведен параметр value
.
- culture
- CultureInfo
Экземпляр объекта CultureInfo, используемый для управления приведением типов данных. Если параметр culture
имеет значение null
, для текущего потока используется объект CultureInfo.
Возвращаемое значение
Объект, содержащий заданное значение в качестве нового типа.
Комментарии
Отражение моделирует правила специальных возможностей системы общих типов. Например, если вызывающий объект находится в той же сборке, вызывающий объект не нуждается в специальных разрешениях для внутренних членов. В противном случае вызывающему объекту требуется ReflectionPermission. Это согласуется с поиском защищенных, закрытых и т. д.
Общий принцип заключается в том, что ChangeType
следует выполнять только расширяющие приведения, которые никогда не теряют данные. Примером расширяющегося приведения является приведение значения, представляющее собой 32-разрядное целое число со знаком, к значению, которое является 64-разрядным целым числом со знаком. Это отличается от сужающего приведения, что может привести к потере данных. Примером сужающего приведения является приведение 64-разрядного целого числа со знаком к 32-разрядному целому числу со знаком.
В следующей таблице перечислены приведения, выполняемые по умолчанию ChangeType
.
Тип исходного значения | Тип результирующего значения |
---|---|
Любой тип | Его базовый тип. |
Любой тип | Интерфейс, который он реализует. |
Char | UInt16, UInt32, Int32, UInt64, Int64, Single, Double |
Byte | Char, UInt16, Int16, UInt32, Int32, UInt64, Int64, Single, Double |
SByte | Int16, Int32, Int64, Single, Double |
UInt16 | UInt32, Int32, UInt64, Int64, Single, Double |
Int16 | Int32, Int64, Single, Double |
UInt32 | UInt64, Int64, Single, Double |
Int32 | Int64, Single, Double |
UInt64 | Single, Double |
Int64 | Single, Double |
Single | Double |
Без ссылок | По ссылке. |
Если реализация связывателя позволяет приведение строковых значений к числовым типам, culture
параметр необходим для преобразования строки, представляющей 1000, в Double значение, так как значение 1000 по-разному представлено разными языками и региональными параметрами. Связыватель по умолчанию не выполняет подобного преобразования строковых типов.