In C # dovrei usare uint o int per i valori che non sono mai dovrebbero essere negativo? [duplicare]
-
23-10-2019 - |
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
?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;
}
}