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.



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


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;

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;

2

int erlaubt nicht null, use-

int? value = 0  

oder verwenden

Nullable<int> value

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



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

-1

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.