Введение в язык C# и платформу .NET FrameworkIntroduction to the C# language and the .NET Framework

C# является элегантным, типобезопасным объектно-ориентированным языком, позволяющим разработчикам создавать различные безопасные и надежные приложения, работающие на .NET Framework.C# is an elegant and type-safe object-oriented language that enables developers to build a variety of secure and robust applications that run on the .NET Framework. C# можно использовать для создания клиентских приложений Windows, XML-веб-служб, распределенных компонентов, приложений клиент-сервер, приложений баз данных и т. д.You can use C# to create Windows client applications, XML Web services, distributed components, client-server applications, database applications, and much, much more. Visual C# предоставляет усовершенствованный редактор кода, удобные конструкторы пользовательского интерфейса, интегрированный отладчик и многие другие средства, чтобы упростить разработку приложений на языке C# и платформе .NET Framework.Visual C# provides an advanced code editor, convenient user interface designers, integrated debugger, and many other tools to make it easier to develop applications based on the C# language and the .NET Framework.

Примечание

В документации по Visual C# предполагается, что у вас есть понимание основных концепций программирования.The Visual C# documentation assumes that you have an understanding of basic programming concepts. Если вы еще совсем новичок, рекомендуем сначала изучить выпуск Visual C# Express, доступный в Интернете.If you are a complete beginner, you might want to explore Visual C# Express, which is available on the Web. Также для приобретения практических навыков программирования будут полезны книги и веб-ресурсы о C#.You can also take advantage of books and Web resources about C# to learn practical programming skills.

C# - языкC# language

Синтаксис C# очень богат, но при этом прост и удобен в изучении.C# syntax is highly expressive, yet it is also simple and easy to learn. Характерные фигурные скобки C# мгновенно узнаются всеми, кто знаком с C, C++ или Java.The curly-brace syntax of C# will be instantly recognizable to anyone familiar with C, C++, or Java. Разработчики, знающие любой из этих языков, обычно очень быстро начинают эффективно работать в C#.Developers who know any of these languages are typically able to begin to work productively in C# within a very short time. Синтаксис C# упрощает многие сложности C++, но при этом предоставляет мощные функции, например обнуляемые типы значений, перечисления, делегаты, лямбда-выражения и прямой доступ к памяти.C# syntax simplifies many of the complexities of C++ and provides powerful features such as nullable value types, enumerations, delegates, lambda expressions, and direct memory access. C# поддерживает универсальные методы и типы, которые обеспечивают более высокий уровень безопасности и производительности, а также итераторы, позволяющие определять в классах коллекций собственное поведение итерации, которое может легко применить в клиентском коде.C# supports generic methods and types, which provide increased type safety and performance, and iterators, which enable implementers of collection classes to define custom iteration behaviors that are simple to use by client code. Выражения LINQ создают очень удобную языковую конструкцию для строго типизированных запросов.Language-Integrated Query (LINQ) expressions make the strongly typed query a first-class language construct.

C# является объектно-ориентированным языком, а значит поддерживает инкапсуляцию, наследование и полиморфизм.As an object-oriented language, C# supports the concepts of encapsulation, inheritance, and polymorphism. Все переменные и методы, включая метод Main, представляющий собой точку входа в приложение, инкапсулируются в определения классов.All variables and methods, including the Main method, the application's entry point, are encapsulated within class definitions. Класс наследуется непосредственно из одного родительского класса, но может реализовывать любое число интерфейсов.A class may inherit directly from one parent class, but it may implement any number of interfaces. Методы, которые переопределяют виртуальные методы родительского класса, должны содержать ключевое слово override, чтобы исключить случайное переопределение.Methods that override virtual methods in a parent class require the override keyword as a way to avoid accidental redefinition. В языке C# структура похожа на облегченный класс: это тип, распределяемый в стеке, реализующий интерфейсы, но не поддерживающий наследование.In C#, a struct is like a lightweight class; it is a stack-allocated type that can implement interfaces but does not support inheritance.

Помимо этих основных принципов объектно-ориентированного программирования, C# предлагает ряд инновационных языковых конструкций, упрощающих разработку программных компонентов.In addition to these basic object-oriented principles, C# makes it easy to develop software components through several innovative language constructs, including the following:

  • Инкапсулированные сигнатуры методов, именуемые делегатами, которые позволяют реализовать типобезопасные уведомления о событиях.Encapsulated method signatures called delegates, which enable type-safe event notifications.

  • Свойства, выполняющие функцию акцессоров для закрытых переменных-членов.Properties, which serve as accessors for private member variables.

  • Атрибуты, предоставляющие декларативные метаданные о типах во время выполнения.Attributes, which provide declarative metadata about types at run time.

  • Внутристрочные комментарии для XML-документации.Inline XML documentation comments.

  • LINQ, который предоставляет встроенные возможности для создания запросов к различным источникам данных.Language-Integrated Query (LINQ), which provides built-in query capabilities across a variety of data sources.

Для взаимодействия с другим программным обеспечением Windows, например с объектом COM или собственными библиотеками DLL Win32, вы можете применить процесс C#, известный как "Взаимодействие".If you have to interact with other Windows software such as COM objects or native Win32 DLLs, you can do this in C# through a process called "Interop". Взаимодействие позволяет программам на C# делать практически все, что возможно в приложении машинного кода C++.Interop enables C# programs to do almost anything that a native C++ application can do. C# поддерживает даже указатели и понятие "небезопасного" кода для тех случаев, в которых важен прямой доступ к памяти.C# even supports pointers and the concept of "unsafe" code for those cases in which direct memory access is critical.

Процесс построения в C# проще по сравнению с C или C++, но более гибок, чем в Java.The C# build process is simple compared to C and C++ and more flexible than in Java. Отдельные файлы заголовка не используются, и нет необходимости объявлять методы и типы в определенном порядке.There are no separate header files, and no requirement that methods and types be declared in a particular order. Исходный файл C# может определить любое число классов, структур, интерфейсов и событий.A C# source file may define any number of classes, structs, interfaces, and events.

Вот еще несколько ресурсов по языку C#.The following are additional C# resources:

Архитектура платформы .NET Framework.NET Framework Platform Architecture

Программы C# выполняются на платформе .NET Framework, встроенном компоненте Windows, которая включает виртуальную систему выполнения, называемую поддержкой общеязыковой среды выполнения (CLR), и унифицированный набор библиотек классов.C# programs run on the .NET Framework, an integral component of Windows that includes a virtual execution system called the common language runtime (CLR) and a unified set of class libraries. Среда CLR корпорации Майкрософт представляет собой коммерческую реализацию международного стандарта Common Language Infrastructure (CLI), который служит основой для создания сред выполнения и разработки, позволяющих совместно использовать разные языки и библиотеки.The CLR is the commercial implementation by Microsoft of the common language infrastructure (CLI), an international standard that is the basis for creating execution and development environments in which languages and libraries work together seamlessly.

Исходный код, написанный на языке C# компилируется в промежуточный язык (IL), который соответствует спецификациям CLI.Source code written in C# is compiled into an intermediate language (IL) that conforms to the CLI specification. Код на языке IL и ресурсы, в том числе точечные рисунки и строки, сохраняются на диск в виде исполняемого файла (обычно с расширением .exe или .dll). Такой файл называется сборкой.The IL code and resources, such as bitmaps and strings, are stored on disk in an executable file called an assembly, typically with an extension of .exe or .dll. Сборка содержит манифест с информацией о типах, версии, требований безопасности, языке и региональных параметрах для этой сборки.An assembly contains a manifest that provides information about the assembly's types, version, culture, and security requirements.

При выполнении программы C# среда CLR загружает сборку и выполняет различные действия в зависимости от сведений, сохраненных в манифесте.When the C# program is executed, the assembly is loaded into the CLR, which might take various actions based on the information in the manifest. Если выполняются все требования безопасности, среда CLR выполняет JIT-компиляцию из кода на языке IL в инструкции машинного языка.Then, if the security requirements are met, the CLR performs Just-In-Time (JIT) compilation to convert the IL code to native machine instructions. Также среда CLR выполняет другие операции, например автоматическую сборку мусора, обработку исключений и управление ресурсами.The CLR also provides other services related to automatic garbage collection, exception handling, and resource management. Код, выполняемый средой CLR, иногда называют "управляемым кодом", чтобы подчеркнуть отличия этого подхода от "неуправляемого кода", который сразу компилируется в машинный язык для определенной системы.Code that's executed by the CLR is sometimes referred to as "managed code", in contrast to "unmanaged code", which is compiled into native machine language that targets a specific system. На следующей схеме показаны связи между файлами исходного кода C#, библиотеками классов .NET Framework, сборками и средой CLR, существующие во время компиляции и во время выполнения.The following diagram illustrates the compile-time and run-time relationships of C# source code files, the .NET Framework class libraries, assemblies, and the CLR.

От исходного кода на C# к машинному выполнению

Взаимодействие между языками является ключевой особенностью платформы .NET Framework.Language interoperability is a key feature of the .NET Framework. Создаваемый компилятором C# код IL соответствует спецификации общих типов (CTS). Это означает, что этот код IL может успешно взаимодействовать с кодом, созданным из Visual Basic и Visual C++ для платформы .NET или из любого другого CTS-совместимого языка, которых существует уже более 20.Because the IL code produced by the C# compiler conforms to the Common Type Specification (CTS), IL code generated from C# can interact with code that was generated from the .NET versions of Visual Basic, Visual C++, or any of more than 20 other CTS-compliant languages. Одна сборка может содержать несколько модулей, написанных на разных языках .NET, и все типы могут ссылаться друг на друга, как если бы они были написаны на одном языке.A single assembly may contain multiple modules written in different .NET languages, and the types can reference each other just as if they were written in the same language.

Помимо служб в среде выполнения, платформа .NET Framework также включает обширную библиотеку из более чем 4000 классов, организованных по пространствам имен, которые предоставляют разнообразные полезные функции для всех операций: от ввода и вывода файлов до управления строками при анализе XML и элементов управления Windows Forms.In addition to the run time services, the .NET Framework also includes an extensive library of over 4000 classes organized into namespaces that provide a wide variety of useful functionality for everything from file input and output to string manipulation to XML parsing, to Windows Forms controls. Типичное приложение C# широко использует библиотеки классов .NET Framework для стандартных задач по подключению.The typical C# application uses the .NET Framework class library extensively to handle common "plumbing" chores.

Дополнительные сведения см. в обзоре платформы Microsoft .NET Framework.For more information about the .NET Framework, see Overview of the Microsoft .NET Framework.

См. также разделSee also