2

我正在阅读.NET IL Assembler书。书中有一段话:

`ldstr` "Enter a number"是从指定的字符串常量创建字符串对象并将对该对象的引用加载到堆栈上的指令。在这种情况下,字符串常量存储在元数据中。您可以将此类字符串称为公共语言运行时字符串常量元数据字符串常量。您可以用另一种方式存储和处理字符串常量,稍后将解释,ldstr只处理公共语言运行时字符串常量,它们始终以 Unicode (UTF-16) 格式存储。

我看到作者写道,可以将string其称为公共语言运行时字符串常量元数据字符串常量。虽然我不明白这些选项之间的区别,但我的问题是关于其他的......

此外,作者写了两次关于ldstr指令对字符串的使用,每次都是其他的(我用粗体选择了它)。

那么团队使用哪种类型的常量呢?它是公共语言运行时字符串常量吗?还是元数据字符串常量?

4

1 回答 1

0

在过去的几天里,我对此进行了一些研究,并提出了一个可能的答案。

.NET 2.0 IL Assembler一书似乎使用与您的书相同的示例。他们谈论那个指令

ldstr“输入一个数字”

将常量“输入数字”加载到元数据中。与您的示例相同,它声明它可以称为公共语言运行时字符串常量元数据字符串常量,在这种情况下似乎没有区别。至于我的理解,它只是简单地说字符串常量是用 UTF-16 格式化的。如果您想使用 ANSI 格式的字符串,则必须使用占位符。(我无法解释,因为我也是这个话题的新手)。

所以我对这个问题的结论是,它只是归结为元数据的 UTF-16 编码。

于 2018-04-17T06:46:42.983 回答