我在C#文章中多次使用原生和文字 "关键字".他们的意思是什么?
例子:
Empty常量保存空字符串值.我们需要调用String构造函数,以便编译器不会将其标记为 文字.将其标记为文字将意味着它不会显示为我们可以从本机访问的字段.
简单/原始类型
两种语言都支持许多内置类型,这些类型按值而不是通过引用进行复制和传递.Java将这些类型称为原始类型,而它们在C#中称为简单类型.简单/原始类型通常具有来自底层处理器体系结构的本机支持.
Jon*_*eet 14
从C#规范部分2.4.4:
甲文字是一个值的一个源代码表示.
例如,有字符串和数字的文字:
string x = "hello";
int y = 10;
Run Code Online (Sandbox Code Playgroud)
...但是C#没有日期和时间的文字语法; 你必须使用:
DateTime dt = new DateTime(2011, 12, 11);
Run Code Online (Sandbox Code Playgroud)
至于原生支持 - 这里有不同级别的"原生",但就C#而言,我通常会考虑使用任何输出格式的类型特定支持.因此,例如,存在有 IL指令来处理二进制浮点类型(float,double),但是当C#编译器生成代码处理decimal值,它必须调用声明的运算System.Decimal.因此,我会考虑float并在IL中double提供原生支持,但decimal事实并非如此.
(这将有可能写一个C#编译器针对不同的平台,确实有原生支持decimal-或没有原生支持float,并double,例如可能性不大,但有可能.)
然后,当IL在执行引擎中运行时,它将在"真实"本机代码(例如x86)之上运行 - 它可以对某些类型具有特定支持.这是"原生"的另一个层次.例如,如果某人想出了包含原生支持的新版IL decimal,那并不意味着CPU本身突然获得了原生支持.