2010-11-16 65 views
5

我正在搞亂一些二進制文件的解析,當我遇到我想知道的東西時。爲什麼Stream.Position長

Stream.Position屬性是類型Int64long。爲什麼是這樣?難道不應該使用UInt64更有意義,因爲流中的位置不能爲負數?

任何人都知道這是一個簽名長而非無符號長度的用法嗎?

+0

可能的重複[爲什麼.NET在某些類中使用int而不是uint?](http://stackoverflow.com/questions/782629/why-does-net-use-int-instead-of-uint-在某些類中) – dtb 2010-11-16 21:15:44

+0

@dtb ya可能想要[閱讀此]。(http://blog.stackoverflow.com/2010/11/dr-strangedupe-or-how-i-learned-to-stop-worrying - 和 - 愛複製/) – Will 2010-11-16 21:18:24

+1

Dtb感謝那個鏈接,它爲我清除了很多。我沒有在我的搜索中找到它,因爲我認爲它是Stream類的特定內容。沒想到其他班也有同樣的問題。 – 2010-11-16 21:21:11

回答

10

UInt64 is not CLS Compatible,並在BCL的所有類必須是(至少在他們的公共/保護的東西)

真正的問題是淡然的,爲什麼UINT64不兼容CLS,那就是已經asked and answered :)

+0

啊謝謝,這是如此令人困惑,雖然oO – 2010-11-16 21:17:19

+1

[爲什麼我們在CLS中沒有無符號類型](http://blogs.msdn.com/b/brada/archive/2003/09/02/50285.aspx) – dtb 2010-11-16 21:17:33

+0

啊,其實這很容易^^我非常理解。從來沒有想過它會和CLS有什麼關係。 – 2010-11-16 21:19:12