В чем разница между нулевым приведением и объектом по умолчанию - PullRequest
0 голосов
/ 08 февраля 2019

Интересно, в чем разница между этим кодом:

(Person)null

И этим кодом

default(Person)

Я думаю, что это то же самое.Это действует так же для меня.Какие нюансы?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Иногда ключевые слова по умолчанию очень удобны при работе с общими объектами.Возвращает значение по умолчанию, когда объект не инициализирован.Например, мы все знаем, что целые числа инициализируются в 0, если не дано никакого значения.Символы пустые, если им не присвоено какое-либо значение, объекты имеют нулевое значение, если им не присвоено никакого значения.

Эти значения назначаются на основе ключевого слова по умолчанию.Таким образом, если мы напишем:

int x = default(int);//will be assigned to 0

будет таким же, как int x;

В случае универсального объекта, когда тип не определен, мы можем использовать default, чтобы присвоить объекту конкретное значение.Давайте рассмотрим пример:

public T GetDefault<T>()
{
return default(T);
} 

Функция возвращает значение по умолчанию для каждого отправляемого отдельного типа.Таким образом,

int defx = this.GetDefault<int>(); //will assign 0
char defy = this.GetDefault<char>(); // will assign null('\0')
object defz = this.GetDefault<object>(); // will assign null

Таким образом, мы можем использовать ключевое слово по умолчанию, чтобы очень легко получить назначения объекта по умолчанию.

С другой стороны, (Персона) null приведение к нулю, просто дает вамперсона ноль объект

0 голосов
/ 08 февраля 2019

default() возвращает значение по умолчанию для типа.Для ссылочных типов это null.Например, для int это значение 0, а для даты и времени - 0001-01-01 00:00.См. docs для других типов по умолчанию.

Так что default() ведет себя по-разному в зависимости от типа.

(Person)null приведение к нулю, просто дает вам человекаобъект, который является нулевым.Я не знаю, когда вы захотите использовать это.В объявлении переменной нет необходимости:

Person p = (Person)null;

совпадает с

Person p = null;

Фактически можно использовать

var p = (Person)null;

и

var p = default(Person);
...