Куратор сегодня задал вопрос: «В каком случае используется System.Int32 вместо int, System.String вместо string, и так далее при объявлении типа?»
Ведь это одно и тоже, так? Но он сказал, что есть ситуации, когда нужно указывать System.*.
Куратор сегодня задал вопрос: «В каком случае используется System.Int32 вместо int, System.String вместо string, и так далее при объявлении типа?»
Ведь это одно и тоже, так? Но он сказал, что есть ситуации, когда нужно указывать System.*.
int является ключевым словом, которое, в свою очередь, является псевдонимом System.Int32. Это высечено в спецификации, поэтому трактовке и изменениям не подлежит. Следовательно, таких ситуаций в языке C# нет.
Всё это относится и к другим «встроенным» типам(string, float, object и т.д).
Хотя это и не относится непосредственно к вопросу, тем не менее, int не получится использовать в выражении nameof — придётся использовать System.Int32. Хотя подобное использование, на мой взгляд, интересно лишь в познавательном ключе и никакого практического применения не имеет.
nameof(System.Int32)компилируется, аnameof(int)- нет. – i-one May 18 '16 at 06:56intи т.д. это ж на время compile-time только, а рефлексия в run-time - естественно там ничего похожего быть не может – Grundy May 18 '16 at 12:30nameofвообще довольно много ограничений на то, что можно подставить – Grundy May 18 '16 at 12:35intсуществует лишь во время компиляции. – VladD May 18 '16 at 12:55nameof, например. А ещё в старых версиях языкаenumможно было наследовать отint, но неSystem.Int32. – VladD May 18 '16 at 15:13nameofкак-то разберутся. – VladD May 18 '16 at 15:56typeofиsizeofпринимают оба варианта. Тут аналогично просится. Неконсистентность некоторая. – i-one May 19 '16 at 05:12nameof- прямо описаны варианты которые допустимы и какие нет. В то время как, например при определении enum такого не было – Grundy May 19 '16 at 06:02