ЕСЛИ условие со строкой - PullRequest
0 голосов
/ 24 августа 2011

Просто быстро:

string firstline; 
if (firstline == null) {
    System.Console.WriteLine("String empty!");
}

Теоретически, если в первой строке нет значения, консоль должна поставить "String empty!"?

Ответы [ 7 ]

6 голосов
/ 24 августа 2011

Это даже не компилируется из-за:

Использование неназначенной локальной переменной 'firstline'

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


Однако, если firstline не локальная переменная, а переменная-член окружающего класса, она будет автоматически инициализирована с null. В общем, все переменные-члены класса инициализируются с default(T), где T - тип переменной-члена.

1 голос
/ 24 августа 2011

По умолчанию они не равны нулю. Если вы хотите, чтобы это значение было пустым по умолчанию, используйте это:

static string firstline;
static void Main(string[] args)
{

    if (firstline == null)
    {
        System.Console.WriteLine("String empty!");
    }
}

Но я предлагаю использовать это:

static void Main(string[] args)
{
    string firstline = null;
    // or this:
    //string firstline = String.Empty;
    if (String.IsNullOrEmpty(firstline))
    {
        System.Console.WriteLine("String empty!");
    }
}

В обоих случаях вы можете получить загадку

Использование неназначенной локальной переменной 'firstline'

1 голос
/ 24 августа 2011

Вы не можете скомпилировать в VS с ошибкой: использование неназначенной локальной переменной 'firstline'!

Попробуйте назначить ноль раньше!

EDIT

или

class Program
{
    static string firstline; # with static you can compile and got your behaviour

    static void Main(string[] args)
    {


        if (firstline == null)
        {
            System.Console.WriteLine("String empty!");
        }

        Console.ReadKey();
    }
}
0 голосов
/ 25 августа 2011

вот мои 2 цента:

 if (firstline == (string)null) throw new ArgumentNullException("firstline"); //value is null
 if (firstline.Length == 0) throw new ArgumentOutOfRangeException("firstline", "Value is empty"); // string.Empty

Я нашел это с помощью Pex and Moles

0 голосов
/ 24 августа 2011

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

Строка null - это как раз и отсутствие значения.Это не пустая строка, это строка без значения.

Пустая строка - это строка нулевой длины, "" или string.Empty.Это не null, так как оно имеет значение, но это значение нулевой длины.

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

if (string.IsNullOrEmpty(firstline))
{
    System.Console.WriteLine("String is null or empty!");
}
0 голосов
/ 24 августа 2011

Ваш код неверен, Использование неназначенной локальной переменной 'firstline'.Вы можете назначить его с любым значением для проверки.Если вы хотите проверить, является ли это пустой строкой, лучше:

string firstline = null;  //change to "" to test
if (string.IsNullOrEmpty(firstline))
{
  System.Console.WriteLine("String empty!");
}
0 голосов
/ 24 августа 2011

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

Также null и "" (или String.Empty) часто означают одно и то же, поэтому более командный способ сделать это:

if(String.IsNullOrEmpty(firstline))
{
   Console.WriteLine("String is empty!");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...