Sollte ich in C# uint oder int für Werte verwenden, die niemals negativ sein sollen? [Duplikat

StackOverflow https://stackoverflow.com/questions/2963057

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?

War es hilfreich?

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;
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top