【发布时间】:2017-07-14 04:19:36
【问题描述】:
为什么字符串类型允许用作常量?
因为字符串在堆中被初始化,所以它们如何用作常量。 编译器如何知道字符串的大小?什么是字符串表?是用来计算字符串长度的。
如果我在应用中多处使用字符串常量,会不会增加内存消耗?
【问题讨论】:
-
C# 中的常量只是逐字编译。所以,当你有
const string something = "testing";,然后你写Console.WriteLine(something),编译器用Console.WriteLine("testing")替换它。字符串在 C# 中被实习,所以不,重复的常量字符串不会占用更多内存。见stackoverflow.com/questions/16636363/… -
谢谢@Rob,但为什么他们允许使用常量,因为没有引用类型用作常量。
-
它们是不可变的。常量可以是数字、布尔值、字符串或空引用。
-
@AnkitRana 字符串是一种特殊的引用类型,与其他引用类型不同,它们可以在编译时构建。因此,它们可以标记为
constant。 -
那为什么不允许 dateTime 声明为常量?