В C # откуда берутся ключевые слова, если «используя систему» ​​комментировать?

Например, мы знаем, что тип int в C # - это не что иное, как структура, которая на самом деле является System.Int32. Если это так, то если "используя систему"; комментируется в программе, тогда тип int не должен быть в состоянии использовать. Но все же тип int может быть использован. Мой вопрос: откуда эти типы?

//using System;
class Program
{
    static void Main() {
         int x = 0;  // it still work, though int is under System namespace, why??
    }
}
c#
12 голосов | спросил sahossaini 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 15 Sep 2013 21:56:32 +0400 2013, 21:56:32

1 ответ


0

Псевдонимы типа , например, int, string, object и т. д. встроены в язык и не требуют использования директивы using, в отличие от DateTime например.

Однако, если это поможет вам подумать об этом, вы можете считать int сокращенным от global::System.Int32

class Program
{
    static void Main() {
         int x = 0;
    }
}

переводится в

class Program
{
    static void Main() {
         global::System.Int32 x = 0;
    }
}

На самом деле, поскольку псевдонимы типов являются ключевыми словами, вы даже не можете переопределить их так, как вы могли бы ожидать:

public class int { } // Compiler error: Identifier expected; 'int' is a keyword

Если по какой-либо причине вы захотите это сделать, вам придется экранировать идентификатор, подобный следующему:

public class @int { }

int x = 0;             // equivalent to global::System.Int32
@int y = new @int();   // equivalent to global::[email protected]
ответил p.s.w.g 15 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 15 Sep 2013 21:58:06 +0400 2013, 21:58:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132