En C# ¿Debo usar UINT o int para valores que nunca se supone que sean negativos? [duplicar

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

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?

¿Fue útil?

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;
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top