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 по-разному представлено разными языками и региональными параметрами. Связыватель по умолчанию не выполняет подобного преобразования строковых типов.