我是C#
和WPF
架构的新手。我的项目中有BinaryFile class
,其中包含以下属性:fileName
,fileLength
,errorCount
和dataContent
。此类绑定到Richtextbox
。我需要在此类中包含一个属性,该属性保存Richtextbox
中的数据。使用字符串是个好主意吗?我的二进制文件非常庞大,平均为10MB。
答案 0 :(得分:3)
来自the documentation(由我加粗的粗体文字,不在源文件中)
字符串是使用的Unicode字符的顺序集合 表示文字。 String对象是一个顺序集合 System.Char表示字符串的对象。 String的值 object是顺序集合的内容,该值是 不可变的(也就是说,它是只读的)。有关的更多信息 字符串的不变性,请参见Immutability和StringBuilder 本主题后面的类部分。 String对象的最大大小 在内存中是2 GB,或大约10亿个字符。
答案 1 :(得分:1)
10MB没问题。 .NET字符串的内置限制为2,147,483,647。但是,鉴于.NET中的字符编码为unicode,每个字符需要2个字节,因此将其减少一半。无论哪种方式,你的10MB都离最大值很远。
答案 2 :(得分:1)
字符串长度可以是2,147,483,647个字符。
请注意,使用许多字符串可能会导致OutOfMemoryException。大于85000字节的对象是大对象,.NET处理它们与其他垃圾收集的东西不同。您可能会受到内存碎片的影响。
答案 3 :(得分:0)
字符串不能超过2,147,483,648个AKA 2 ^ 31个字符,因为String.Length是一个32位整数。
他们也受到可用内存的限制。