字符串常量在编译的DLL中占用多少空间?

Ste*_*lis 6 c# string silverlight compilation

我正在尝试找出影响我的Silverlight应用程序程序集的编译大小的内容.显然,我想减少应用程序的大小,最明显的方法是摆脱我的一些常量字符串(例如错误字符串 - 应用程序或其他资源密集型实体中没有图像).我随后将根据需要从服务器中提取字符串.在我接受这项工作之前,我想弄清楚大概节省的空间.

编译的常量在编译的DLL中占用了多少内存?我假设它被存储为UNICODE UTF-16字符数组,因此每个字符将是2个字节?它是否正确?是否有经验法则(或更严格的规则来计算可以对用于创建最终.xap文件的zip压缩的字符串进行多少压缩?

编辑显然,我提出这个问题的方式引起了一些混乱.我不是说'内存占用'是'应用程序消耗的内存量',而是'dll'的大小,因此也就是创建的xap文件.

xan*_*tos 4

比方说:.NET 中的a System.Char( c# 中的 a)是 2 个字节。char它无法表示所有 Unicode 字符。只有 BMP(基本多语言平面)的字符可以用单个 来表示Char。其他的被分成代理对,需要 2x Char。99% 的情况下您不会使用 BMP 之外的字符。http://en.wikipedia.org/wiki/UTF-16

现在... .NET 中的 s 由(末尾带有终止符)String组成,因此“通常”BMP 的每个字符为 2 个字节(加上另外 2 个终止符字符)。System.CharNUL

在程序集中,字符串保存为 UTF-16。我刚刚用十六进制编辑器检查过。它们不是“完全”NUL终止的(它们在 0 处有一个字节),但它们的长度(以字节为单位)+ 1(对于在 0 处的单个字节)作为 16 位值前置。