2010-11-16 4 views
5

? Estuve jugando con un análisis de un archivo binario cuando me encontré con algo que me preguntaba.¿Por qué la Stream.Position es larga

La propiedad Stream.Position es del tipo Int64 o long. ¿Por qué es esto? ¿No debería tener más sentido usar un UInt64 ya que la posición en un flujo no puede ser negativa?

¿Alguien sabe de qué sirve que sea una firma larga y no firmada?

+0

posible duplicado de [¿Por qué .NET utiliza int en lugar de uint en ciertas clases?] (Http://stackoverflow.com/questions/782629/why-does-net-use-int-instead-of-uint- in-certain-classes) – dtb

+0

@dtb ya podría querer [leer esto.] (http://blog.stackoverflow.com/2010/11/dr-strangedupe-or-how-i-learned-to-stop-worrying -and-love-duplication /) – Will

+1

Dtb gracias por ese enlace que despejó mucho para mí. No lo encontré en mis búsquedas porque pensé que era algo específico para la clase Stream. No pensé que otras clases tuvieran el mismo * problema * también. –

Respuesta

10

UInt64 is not CLS Compatible, y todas las clases en el BCL tienen que ser (al menos en su materia pública/protegido)

La verdadera pregunta es ¿por qué UInt64 de Couse no es compatible con CLS, y que ya era asked and answered :)

+0

Ah, gracias, aunque es tan confuso oO –

+1

[Por qué no tenemos tipos sin firmar en el CLS] (http://blogs.msdn.com/b/brada/archive/2003/09/02/50285.aspx) – dtb

+0

Aah, en realidad es bastante fácil ^^ Lo entiendo, muchas gracias. Nunca pensé que hubiera tenido algo que ver con el CLS. –

Cuestiones relacionadas