Sollte ich in C# uint oder int für Werte verwenden, die niemals negativ sein sollen? [Duplikat
-
23-10-2019 - |
Frage
Mögliches Duplikat:
Sollte ich Uint in C# für Werte verwenden, die nicht negativ sein können?
Angenommen, das MaxValue
von (ungefähr :)) 2^31 vs 2^32 spielt keine Rolle. Einerseits verwenden uint
Scheint schön, weil es selbsterklärend ist, zeigt (und verspricht?), dass ein gewisser Wert niemals negativ ist. Jedoch, int
ist häufiger und eine Besetzung ist oft unpraktisch. Man kann int nur verwenden und es immer mit Codeverträgen ergänzen (jeder ist in jetzt zu .NET 4.0 gewechselt, oder?) Standardbibliotheken verwenden int
zum Length
und Size
Eigenschaften, obwohl diese niemals negativ sein sollten. Ist es dir also offensichtlich, dass dir das offensichtlich ist? int
ist besser als uint
Meistens oder ist es komplizierter?
Bitte stellen Sie Fragen, wenn Sie feststellen, dass diese Frage nicht klar angegeben ist.
Vielen Dank.
BEARBEITEN: Ja, sieht aus wie ein Betrüger. Und besonders kleine Frage: Können Sie mir ein gutes Beispiel dafür geben, wie man die Eigenschaften / Funktionen mit Codeverträgen / Assert -Anweisungen in diesem speziellen Fall ergänzt, wenn Wert möglicherweise nicht negativ ist?
Lösung
Siehe hier für die Vorherige Antwort.
Andere Tipps
Kurze Antwort ist Nein. Sie möchten möglicherweise wie unten implementiert.
private int _length;
public int Length
{
get { return _length; }
set
{
if (value < 0)
{
throw new InvalidOperationException("Length must be always positive. Please make sure the value is positive value.");
}
this._length = value;
}
}