Важная информация
Показано с 1 по 4 из 4

Тема: Ввод строковой переменной

  1. #1 Ввод строковой переменной 
    Новичок
    Регистрация
    11.09.2018
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 1 раз в 1 сообщении
    Буквально вчера я столкнулся с вопросом, на который мне не смог дать ответ мой преподаватель, который ведёт у нас основы программирования на языке C#. Ниже я привёл код, который и озадачил меня. Если во время ввода с клавиатуры пользователь просто нажмёт Enter, то сработает третье условие. Суть вопроса: чем s = null отличается от s = ""?
    C# Code:
    1.  
    2. string s = Console.ReadLine();
    3. if (s == null) { Console.WriteLine("s = null"); }
    4. else if (s == " ") { Console.WriteLine("s = void symbol"); }
    5. else if (s == "") { Console.WriteLine("?????"); }
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,939
    Сказал(а) спасибо
    1,845
    Поблагодарили 989 раз(а) в 847 сообщениях
    Записей в блоге
    1
    "Ключевое слово null является литералом, представляющим пустую ссылку, которая не ссылается на объект. null является значением по умолчанию для переменных ссылочного типа."
    "Тип, допускающий значение NULL, следует использовать, когда нужно представить неопределенное значение его базового типа."
    Если что литерал - это константа определённого типа.

    https://docs.microsoft.com/ru-ru/dot.../keywords/null

    Если вкратце то строка, это не указатель. Не программирую на c#, поэтому не в курсе как там происходит
    преобразование типов в подобных конструкциях, но даже если допустить что компилятор пытается привести
    s к ссылочному типу(т.е. допустим получить адрес строкового объекта), то это явно будет не значение
    null, потому что объект существует(даже пустая строка это инициализированный в памяти объект с которым
    идёт работа).
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  3. #3  
    Профи
    Регистрация
    09.11.2013
    Сообщений
    271
    Сказал(а) спасибо
    17
    Поблагодарили 80 раз(а) в 54 сообщениях
    в шарпе все есть объект и строка тоже, нет ничего криминального в создании объекта, описывающего пустую строку. У объектов есть два состояния: существует или не существует. соответственно нулл или не нулл. ридлайн создает объект описывающий пустую строку и передает в эс ссылку на него, после чего эс становится не нулл. поведение вполне предсказуемое
    Ответить с цитированием  
     

  4. #4  
    Модератор
    Регистрация
    19.02.2014
    Сообщений
    403
    Сказал(а) спасибо
    108
    Поблагодарили 303 раз(а) в 191 сообщениях
    Записей в блоге
    36
    Отличается тем что в первом случае это нулевой указатель (т.е. 0), а во втором - указатель на строку нулевой длины (т.е. уже не 0).
    UA6527P
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ввод пароля в форму
    от Алексей141516 в разделе Общие вопросы программирования
    Ответов: 5
    Последнее сообщение: 20.09.2018, 20:04
  2. AJAX отправка переменной из JS в PHP
    от Natalia Chistyakova в разделе PHP
    Ответов: 2
    Последнее сообщение: 12.11.2016, 15:24
  3. Ответов: 0
    Последнее сообщение: 20.06.2014, 01:35
  4. Ввод-вывод
    от Dispetcher14 в разделе QBasic
    Ответов: 5
    Последнее сообщение: 20.05.2011, 17:58
  5. Ввод QB
    от etc в разделе QBasic
    Ответов: 3
    Последнее сообщение: 10.05.2011, 10:37
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •