Wie setze ich den Nullwert in c # auf int?

70
int value=0;

if (value == 0)
{
    value = null;
}

Wie kann ich valuezu nulloben?

Jede Hilfe wird geschätzt.

user2902180
quelle
mögliches Duplikat von Warum ist der Typ "int" niemals gleich 'null'?
Sergey Berezovskiy
1
Beachten Sie, dass 'value' ein Schlüsselwort in C # ist. Dieser Code ist legal C #, aber wahrscheinlich eine schlechte Idee zu verwenden. msdn.microsoft.com/en-us/library/vstudio/a1khb4f8.aspx
Aric TenEyck
@Aric TenEyck Das heißt nicht, dass es richtig ist, aber einige Framework-Methodenparameter haben den Namen value. Zum Beispiel Enum.Parse, String.IndexOfund (logisch) Dictionary<,>.TryGetValue.
Lance U. Matthews

Antworten:

109

In .Net können Sie nulleiner intoder einer anderen Struktur keinen Wert zuweisen . Verwenden Sie stattdessen a Nullable<int>oder int?kurz:

int? value = 0;

if (value == 0)
{
    value = null;
}

Weiterführende Literatur

pswg
quelle
Ich habe versucht, aus dem unmittelbaren Fenster zum Debuggen null zuzuweisen. Es hat aber nicht funktioniert. Wie kann dies erreicht werden?
Mahendran
@ Mahemadhi wahrscheinlich aus dem gleichen Grund können Sie es nicht in regulären Code tun. Wenn eine Variable als deklariert ist int, kann sie nullauch beim Debuggen nicht als Wert empfangen werden . Sie müssen es als deklarieren int?.
Pswg
Die Variable wird deklariert nullable. Im unmittelbaren Fenster konnte ich jedoch keine Null zuweisen.
Mahendran
99

Darüber hinaus können Sie "null" nicht als Wert in einer bedingten Zuweisung verwenden. z.B..

bool testvalue = false;
int? myint = (testvalue == true) ? 1234 : null;

FEHLT mit: Type of conditional expression cannot be determined because there is no implicit conversion between 'int' and '<null>'.

Sie müssen also auch die Null setzen ... Das funktioniert:

int? myint = (testvalue == true) ? 1234 : (int?)null;
Doppelhelix
quelle
7
Ausgezeichnet. Ich habe ein Problem gelöst, das ich heute Abend hatte.
Ron
2
Ok, das ist nicht unbedingt die Antwort auf die Frage, aber ich finde es wirklich nützlich. Kennt jemand den Grund für dieses Verhalten?
Cirelli94
16

Sie können nicht eingestellt intzu null. Verwenden Sie int?stattdessen ein nullbares int ( ):

int? value = null;
Jon
quelle
2

int erlaubt nicht null, use-

int? value = 0  

oder verwenden

Nullable<int> value
AJ
quelle
1
 public static int? Timesaday { get; set; } = null;

ODER

 public static Nullable<int> Timesaday { get; set; }

oder

 public static int? Timesaday = null;

oder

 public static int? Timesaday

oder nur

 public static int? Timesaday { get; set; } 


    static void Main(string[] args)
    {


    Console.WriteLine(Timesaday == null);

     //you also can check using 
     Console.WriteLine(Timesaday.HasValue);

        Console.ReadKey();
    }

Das Schlüsselwort null ist ein Literal, das eine Nullreferenz darstellt, die auf kein Objekt verweist. Bei der Programmierung sind nullfähige Typen ein Merkmal des Typsystems einiger Programmiersprachen, mit denen der Wert anstelle der üblichen möglichen Werte des Datentyps auf den speziellen Wert NULL gesetzt werden kann.

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/null https://en.wikipedia.org/wiki/Null

Amadeu Antunes
quelle
0

Deklarieren Sie Ihre Ganzzahlvariable als nullbar, z. int? variable=0; variable=null;

Francis Tchatchoua
quelle
0
int ? index = null;

public int Index
        {
            get
            {
                if (index.HasValue) // Check for value
                    return index.Value; //Return value if index is not "null"
                else return 777; // If value is "null" return 777 or any other value
            }
            set { index = value; }
        }
dreamboatDev
quelle
-1

Verwenden Sie Null.NullInteger, z. B.: Private int _ReservationID = Null.NullInteger;

El Belo
quelle