En C# ¿Debo usar UINT o int para valores que nunca se supone que sean negativos? [duplicar
-
23-10-2019 - |
Pregunta
Posible duplicado:
¿Debo usar UINT en C# para valores que no pueden ser negativos?
Supongamos que el MaxValue
de (aproximadamente :)) 2^31 vs 2^32 no importa. Por un lado, usando uint
Parece bueno porque se explica por sí mismo, indica (¿y promete?) Que algún valor nunca puede ser negativo. Sin embargo, int
es más común y un elenco a menudo es inconveniente. Uno puede usar int y siempre complementarlo con contratos de código (todos se han mudado a .NET 4.0 ahora, ¿verdad?) Las bibliotecas estándar utilizan int
por Length
y Size
Propiedades, aunque esas nunca deberían ser negativas. Entonces, ¿es obvio para ti que int
es mejor que uint
la mayoría de las veces, ¿o es más complicado?
Haga preguntas si encuentra que esta pregunta no está claramente establecida.
Gracias.
EDITAR: Sí, parece un engaño. Sin embargo, y una pregunta extra pequeña: ¿podría darme un buen ejemplo de cómo complementar las propiedades / funciones con declaraciones de contratos de código / afirmar en este caso particular cuando el valor puede no ser negativo?
Solución
Ver aquí para el respuesta anterior.
Otros consejos
La respuesta corta es No. Es posible que desee implementar como se muestra a continuación.
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;
}
}