下面的代碼給出了「FileNameSizeDelimiteC必須是常量」的問題,問題是什麼?FileNameSizeDelimiteC必須是常量
public const char FileNameSizeDelimiterC = '|';
public const string FileNameSizeDelimiter = Char.ToString(FileNameSizeDelimiterC);
下面的代碼給出了「FileNameSizeDelimiteC必須是常量」的問題,問題是什麼?FileNameSizeDelimiteC必須是常量
public const char FileNameSizeDelimiterC = '|';
public const string FileNameSizeDelimiter = Char.ToString(FileNameSizeDelimiterC);
問題是,Char.ToString
是一種方法,所以就編譯器而言,它不是恆定的。編譯器在編譯時不會運行任何代碼。儘管事實上你或我可能會這樣看,並且說「編譯器不能這樣做,它總是一樣的」。原因在於它不知道Char.ToString
將始終爲相同的輸入返回相同的輸出。它同樣可以是依賴於配置變量,一天中的時間或任何其他事物的東西。雖然語言開發人員可能已經包含了一種方法來標記方法,編譯器可以這樣做,但他們並沒有讓你的const必須是const。
我假設在這種情況下的代碼是示例代碼,所以你不能只使用"|"
這似乎是相同的東西?