In C # dovrei usare uint o int per i valori che non sono mai dovrebbero essere negativo? [duplicare]

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

Domanda

Eventuali duplicati:
Dovrei usare uint in C # per i valori che non può essere negativo?

Si supponga che la MaxValue di (più o meno :)) 2 ^ 31 vs 2 ^ 32 non importa. Da un lato, utilizzando uint sembra bello perché si spiega da sé, indica (e promesse?) Che un certo valore non può mai essere negativo. Tuttavia, int è più comune, e un cast è spesso scomodo. Si può semplicemente utilizzare int e sempre integrare con contratti di codice (tutti hanno spostato in .Net 4.0, ormai, giusto?) Le librerie standard fanno uso int per Length e Size proprietà, anche se coloro che non dovrebbe mai essere negativo. Quindi, è ovvio che è meglio di int uint maggior parte del tempo, o è più complicato?

Si prega di fare domande se si scopre che la questione non è chiaramente indicato.

Grazie.

EDIT: Yup, si presenta come una vittima. Tuttavia, e in più piccola domanda: potrebbe darmi un buon esempio di come integrare le proprietà / funzioni con contratti di codice / assert dichiarazioni in questo caso particolare, quando il valore non può essere negativo

?
È stato utile?

Soluzione

Vedi qui per il precedente rispondere .

Altri suggerimenti

Breve risposta è No. Si consiglia di implementare, come di seguito.

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;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top