.NET Framework中的System
命名空間包含許多未由C#預定義的重要類型,例如, DateTime
。爲什麼DateTime不是預定義的類型?
請問您能解釋一下,爲什麼DateTime
不是預定義類型?
.NET Framework中的System
命名空間包含許多未由C#預定義的重要類型,例如, DateTime
。爲什麼DateTime不是預定義的類型?
請問您能解釋一下,爲什麼DateTime
不是預定義類型?
爲什麼要這樣呢?它不是basic type,它是struct
of various basic types。
只包含支持CLR所需的最小類型,僅此而已。不需要在CLR級別上聲明很多類型,它只會使它更加複雜,並使得將各種平臺上的CLR維護在一個地獄中。
由於類型是建立在CLR之上的,因此它可以受益於CLR帶來的抽象。
可以說,'string'同樣適用於'string',它可以使用'char'數組來實現,也就是說,就像一類不同的基本類型一樣。 –
@ O.R.Mapper:確實,但是具有非常具體的實現,我猜是出於性能原因。請參閱[源代碼](http://referencesource.microsoft.com/#mscorlib/system/string.cs,8281103e6f23cb5c)。 –
當然,在編寫我的評論之前,我剛剛檢查了ILSpy,因此我寫了「可以實現」 - 在任何情況下,具體實現似乎都不是C#語言規範所要求的。 C#'string'關鍵字被指定爲System.String類的別名,但沒有提及該類,因爲它必須以任何方式「特殊」,或者至少不比其他類更特別沒有C#關鍵字別名,例如'Exception'。 –
的types that have aliases(如System.Int32
- >int
)是,你可以看到,在系統命名空間還 「預定義」。通過這種邏輯,DateTime是預定義的,它只是沒有別名。
因爲它不是在語言規範:
4.1值類型
[...] C#提供了一組預定義結構類型稱爲簡單類型。簡單類型通過保留字標識。
- 簡單型:
- 數值型
- 布爾
- 數值型:
- 體型
- 浮點型
- 小數
至於 「爲什麼」,你需要的語言的設計者之一。你爲什麼期望它?爲什麼DateTime
,但不是Point
?
我的假設一直是「因爲它由幾個可分離的組件構成,所以不是原始的」,但我想你可以提出關於字符串由許多字符組成的論點,但我認爲這個假設是合理的? – PhillipH
任何解釋都可以合理,但OP沒有給出任何解釋,因此我們無法正確回答。所以我對OP的問題是:他認爲預定義的類型是什麼,他期望什麼,爲什麼'DateTime'是一個? – CodeCaster
你是什麼意思預定義?它沒有像'System.Int32' - >'int'這樣的別名? –
我認爲你的意思是沒有預先定義的基元? –
我真的不清楚你在問什麼。你期望C#(作爲lanugage)對'DateTime'有什麼支持? –