我正在阅读.NET IL Assembler一书。书中有一句话:
`ldstr` "Enter a number"
是创建字符串对象的指令 从指定的字符串常量并加载对此的引用 对象到堆栈上。在这种情况下,字符串常量存储在 元数据。可以将此类字符串称为公共语言运行时字符串常量或元数据字符串常量。您可以存储和 以另一种方式处理字符串常量,如一些中所述 时刻,但ldstr
专门处理公共语言运行时 字符串常量,始终以 Unicode (UTF-16) 格式存储。
我看到作者写道,可以将string
称为公共语言运行时字符串常量或元数据字符串常量。虽然我不明白这些选项之间的区别,但我的问题是关于其他事情......
此外,作者写了两次关于ldstr
指令使用字符串的文章,每次都是其他的(我用粗体选择了它)。
那么团队使用哪种类型的常量呢?它是公共语言运行时字符串常量吗?还是元数据字符串常量?
在过去的几天里,我对此进行了一些研究,并提出了一个可能的答案。
《.NET 2.0 IL 汇编程序》一书似乎使用与您的书相同的示例。 他们谈论指令
ldstr
"输入数字">
将常量"输入数字">加载到元数据中。 与您的示例相同,它指出它可以称为公共语言运行时字符串常量或元数据字符串常量,在这种情况下似乎没有区别。至于我的理解,它只是简单地说字符串常量是用 UTF-16 格式化的。如果要使用 ANSI 格式的字符串,则必须使用占位符。(我无法解释,因为我也是这个话题的新手)。
所以我对这个问题的结论是,它只是归结为元数据的 UTF-16 编码。