C# Укороченный оператор if

Я знаю, что это может быть очень глупый вопрос, но как ученик мне всегда нравится узнавать что-то новое. В любом случае, вот краткое утверждение If:

string test = "It's a test";
string test2;
if (test != "")
{
    test2 = test;
}
else
{
    test2 = "It's null";
}

Примечание. Я знаю, что Regex также можно использовать для проверки того, пуста ли строка: Regex.IsMatch( "[A-TVWZ]", test). Кроме того, я знаю, что могу использовать SELECT CASE

В приведенном выше коде я проверяю, пуста ли строка test или нет. Если это так, то test2 получает одно значение, если нет, test2 получает другое значение.

Мой вопрос: есть ли более короткий / элегантный / быстрый способ сделать это? Я имею в виду одну строку, которая проверяет, пуста ли строка или нет, и передает требуемое значение в test2? Я знаю, что альтернативные решения могут занять такое же время выполнения, но мне просто интересно, есть ли для этого альтернатива с одной / двумя строками?

Разработать

Я хочу проверить, пуста строка или нет. Для каждого случая другая строка получает определенные значения ...

вы можете test != "" и вместе с тернарным оператором: test2 = test != "" ? test : "It's null";

Gilad Green 01.05.2018 18:07

@GiladGreen, я ищу более короткую альтернативу, чем инструкция if

Christopher H. 01.05.2018 18:08

Пустая строка - это не то же самое, что и null. И что значит быстрее? Вы не получите ничего "быстрее", чем оператор if, проверяющий простое значение.

maccettura 01.05.2018 18:09

Ваш образец не будет компилироваться, потому что ваши фигурные скобки не в том месте.

Roger Lipscombe 01.05.2018 18:09

@Plutonix, здесь не нужно усложнять .... Я могу задать вам тот же вопрос, если вы хотите использовать regex в каком-то случае вместо циклов или операторов it ..... Я спросил, потому что хотел знать, есть ли любые более короткие альтернативы

Christopher H. 01.05.2018 18:10

@zackraiyan какое отношение имеет регулярное выражение к чему-либо? Что вы на самом деле здесь спрашиваете? Почему вы не используете string.IsNullOrEmpty()? У меня так много вопросов ...

maccettura 01.05.2018 18:10

Что ж, в ответе указана единственная версия короче. Однако внутри он выполняет тот же код exavt и, следовательно, не работает быстрее - если это действительно проблема.

HimBromBeere 01.05.2018 18:14

@zackraiyan вы упомянули "быстрее" в своем вопросе. «быстрее» синоним «быстрее»

maccettura 01.05.2018 18:15

quicker означает (или, по крайней мере, я имел в виду) быстрый код .. например, однострочное регулярное выражение может делать именно то, что может делать 10-строчный цикл (в случае строк)

Christopher H. 01.05.2018 18:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
9
186
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать тернарный оператор:

string test = "It's a test";
string test2 = (test != "") ? test : "0-length string";

Как это «быстрее»?

maccettura 01.05.2018 18:10

Он не будет выполняться быстрее, но это меньше строк кода, о чем, похоже, и был вопрос.

retupmoca 01.05.2018 18:10

@maccettura, потому что он инициализируется и объявляет одновременно? p.s. Используйте string.IsNullOrEmpty (string), потому что "" некрасиво: P

Dan Rayson 01.05.2018 18:11

Мне интересно, почему test инициализируется рано ... почему бы просто не поместить его внутри самого if? Является ли это параметром?

Dan Rayson 01.05.2018 18:14

@zackraiyan нет, я только что сообщал вам, что вы можете упростить свою логику. Полностью. Всегда лучше избегать проблем, чем искать их обходные пути.

johnny 5 01.05.2018 18:26
var test = "It's a test";
var test2 = (!string.IsNullOrEmpty(test)) ? test : "It's null";

В частности, для новичков будет полезно, если вы дадите небольшое пояснение к своему ответу. Небольшой комментарий к тернарному оператору сделает ваш ответ более полезным.

Jonathan Willcock 14.06.2019 12:41

Другие вопросы по теме