С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
pavel911
6 / 6 / 2
Регистрация: 02.08.2014
Сообщений: 119
1

Как реализован оператор NULL?

12.08.2014, 23:39. Просмотров 750. Ответов 10
Метки нет (Все метки)

Хотел узнать как реализован оператор NULL? Это некоторый объект, который создается при запуске программаы?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2014, 23:39
Ответы с готовыми решениями:

Тернарный оператор с decimal? и Null не работает
Почему тернарный оператор с типом decimal? и значением Null не работает? Однако...

Перегрузить оператор ==, но не потерять возможности сравнения с null
Как перегрузить оператор == для класса, но так чтобы проверка на null осталась...

Оператор проверки на null
Сейчас может глупость спрошу :) но всё же var location = default(string);...

Как реализован IOCP в системе
​Есть программа написанная на C#. В ней используется асинхронные операции...

Каким образом выполняется оператор "+" для ссылочных типов, если один из операндов равен null
Вопрос может показаться странным, но все же хотелось бы получить ответ. 1)...

10
updaite
14 / 14 / 8
Регистрация: 14.01.2013
Сообщений: 544
Записей в блоге: 2
Завершенные тесты: 5
12.08.2014, 23:47 2
pavel911, null это значит нуль (пусто), например.
C#
1
2
string a = null;
string b = "";
1
kolorotur
Эксперт .NET
10728 / 8884 / 2225
Регистрация: 17.09.2011
Сообщений: 15,276
Завершенные тесты: 1
12.08.2014, 23:52 3
Это уникальный тип данных, имеющий ровно одно значение: null
1
pavel911
6 / 6 / 2
Регистрация: 02.08.2014
Сообщений: 119
12.08.2014, 23:59  [ТС] 4
Цитата Сообщение от updaite Посмотреть сообщение
string a = null;
string b = "";
Предполагаю, что здесь ошибка. В первом случае, a - это ссылка, которая никуда не указывает. А во втором, b - это ссылка на пустую строку. Можно проверить с помощью if.

Добавлено через 1 минуту
C#
1
Console.WriteLine("" == null);
Добавлено через 23 секунды
Будет false!
0
XRoy
862 / 712 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
13.08.2014, 00:07 5
pavel911,
Вы в своем примере сравниваете содержимое строк, ссылки для строки сравниваются так
C#
1
            Console.WriteLine(object.ReferenceEquals(a, b));
Ответ будет идентичен
1
pavel911
6 / 6 / 2
Регистрация: 02.08.2014
Сообщений: 119
13.08.2014, 00:12  [ТС] 6
А у них содержимое разве отличается? Что одна пустая строка, что вторая!

Добавлено через 47 секунд
Проверил, результат FALSE:
C#
1
2
3
4
5
6
7
8
9
using System;
 
class Demo
{ 
    static void Main()
    {
        Console.WriteLine(object.ReferenceEquals("", null));
    }
}
Добавлено через 48 секунд
Цитата Сообщение от XRoy Посмотреть сообщение
Ответ будет идентичен
Проверяйте сначала!
0
XRoy
862 / 712 / 305
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
13.08.2014, 00:20 7
pavel911,
Вообще-то содержимое "" и null отличаются. У null вообще отсутствует значение, у "" значение - пустая строка.
И так сравниваются значения строк
C#
1
a==b
А так их ссылки
C#
1
object.ReferenceEquals(a, b)
Добавлено через 1 минуту
pavel911,
Что проверять то? Я вам с самого начала говорил что в обоих случаях будет False.
1
elfrei
6 / 4 / 0
Регистрация: 07.02.2014
Сообщений: 17
13.08.2014, 00:29 8
судя по дизассемблеру null и "" разные вещи. В первом случае помещается в стек пустая ссылка, во втором ссылка на новый объект(строковый литерал)
1
Frederick
26 / 26 / 7
Регистрация: 15.06.2014
Сообщений: 165
13.08.2014, 01:12 9
Null - пустота. В программировании (как по мне) еще не инициализированный объект, который при попытке использования выдает исключение.
Это не просто 0 или "" - это пустота т.е значение не определено.
1
tranquil
51 / 51 / 10
Регистрация: 26.09.2013
Сообщений: 277
13.08.2014, 01:44 10
pavel911, NULL означает отсутствие, неизвестность информации. Значение NULL не является значением в полном смысле слова: по определению, оно означает отсутствие значения и не принадлежит ни одному типу данных. Поэтому NULL не равно ни логическому значению FALSE, ни пустой строке, ни нулю.Даже выражение NULL != NULL не будет истинным, ведь нельзя однозначно сравнить одну неизвестность с другой.
1
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
13.08.2014, 11:02 11
pavel911, null это не оператор, это специальное обозначение пустой ссылки.
Почти все типы в c# являются ссылочными, т.е. в переменной хранится адрес первой ячейки участка памяти, где хранится ее значение.
у каждого типа есть свое обозначение "пустого" значения. у целого типа это будет 0, у строки - это будет пустая строка ""(то есть в ячейке памяти хранится только признак конца строки), а у ссылки это значение null.
если мы присвоим переменной(ссылочного типа) значение null, то она больше не будет связана с памятью, где хранилось ее значение. Если нет других переменных, которые ссылаются на тот же адрес, то эти данные будут потеряны.
1
13.08.2014, 11:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2014, 11:02

Записать значение null . "Невозможно преобразовать null в int ."
Возникла проблема. Программа должна записывать значения в удаленную базу...

Как вернуть null
Все добрый вечер. пишу такой метод public TV Find(Predicate<TV>...

Как вернуть null?
public static async Task<T> MyQQWWEE<T>(this Task<T> task, T valueOnError =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru