Сортировка и кастинг.Связаны ли они?
-
21-08-2019 - |
Вопрос
На прошлой неделе молодой студент спросил меня, является ли сортировка тем же самым, что и кастинг.Мой ответ был определенно отрицательным.Маршалинг seralization, кстати, чтобы превратить память представление объекта в байты, чтобы его можно было передавать на сети, тогда как литье, связанные с тип преобразования / приведения.
Позже, переосмысливая этот вопрос, я подумал, что маршалинг можно рассматривать как частный случай кастинга.Например, преобразование представления памяти выполняется в xml, тогда можно сказать, что вы "приводите" к типу, определяемому соответствующей грамматикой xsd этого xml-файла.
Что вы думаете по этому поводу?
Решение
Приведение не изменяет тип данных.Это важное различие.Когда вы что-то маршалируете, вы преобразуете данные во что-то другое.
Простое приведение изменяет только то, как вы интерпретируете объект, а не то, чем объект является внутренне.
Я согласен, что различие должно быть четким, иначе незнакомые люди могут быть сбиты с толку.
Другие советы
Сортировка обычно связана с технологической границей (напримерпереход по сети или от одного типа памяти к другому, как в случае управляемого / неуправляемого), тогда как приведение, как правило, находится в пределах одной и той же технологической границы, поэтому я думаю, что это определенно разные вещи.
Было бы исключительно запутанно, если бы мы использовали один и тот же термин для обоих подходов, что означает, что нам нужно было бы определять их по-разному, поскольку у них разное поведение.
Они оба являются "преобразованием типов", но это разные виды преобразования типов:приведение обычно выполняется между связанными типами объектов (напримерпонижение из суперкласса в подкласс), тогда как сортировка может осуществляться, например, из графа объектов в текстовое представление.