c # - IF betingelse med en streng

Indlæg af Hanne Mølgaard Plasc

Problem



Bare en hurtig en:


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


I teorien, hvis der ikke er nogen værdi i 'første linje', skal konsollen udsætte 'String tom!'?

Bedste reference


Dette kompilerer ikke på grund af:



  Brug af ikke-tildelt lokal variabel 'første linje'



Når du siger, at du ikke får nogen output, men programmet compilerer og kører helt fint, viser du ikke din rigtige kode.





Men hvis firstline ikke er en lokal variabel, men en medlemsvariabel i den omgivende klasse, vil den automatisk blive initialiseret med null. Generelt er alle medlemsvariabler af en klasse initialiseret med default(T) hvor T er typen af ​​medlemsvariablen.

Andre referencer 1


Du kan ikke kompilere i VS med fejl: Brug af ikke-tildelt lokal variabel 'første linje'!


Prøv at tildele null før!


EDIT


eller


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();
    }
}

Andre referencer 2


I standard er de ikke null. Hvis du vil have det som standard, skal du bruge dette:


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

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


Men jeg foreslår at bruge denne ene:


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


På begge måder kan du få gåde af



  Brug af ikke-tildelt lokal variabel 'første linje'


Andre referencer 3


Ja, det vil opføre sig som du forventer og skal udskrive til konsollen. Du kan finde ud af, at konsolprogrammet lukker for hurtigt, for at du kan læse resultatet, selvom du ikke har nogen følgende kode.


Også null og '' (eller String.Empty) betyder ofte det samme, så en mere kommando måde at gøre dette på er:


if(String.IsNullOrEmpty(firstline))
{
   Console.WriteLine("String is empty!");
}

Andre referencer 4


Din terminologi gør det lyder som om du er lidt forvirret.


En null streng er netop det - fraværet af værdien. Det er ikke en tom streng, det er en streng uden værdi.


En tom streng er en nul længde streng, "" eller string.Empty. Dette er ikke null som det har en værdi, men værdien er nul længde.


Ofte vil du behandle null og tom værdier ens, i hvilket tilfælde du muligvis bruger checken


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

Andre referencer 5


Din kode er ikke korrekt, Brug af ikke-tildelt lokal variabel 'første linje'. Du kan tildele det med nogen værdi at teste. Hvis du vil kontrollere, om det er en tom streng, er en bedre måde:


string firstline = null;  //change to "" to test
if (string.IsNullOrEmpty(firstline))
{
  System.Console.WriteLine("String empty!");
}

Andre referencer 6


her er mine 2 cent:


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


Jeg fandt dette ved at bruge Pex and Moles [17]