Prohlídka C# jazykaA Tour of the C# Language

C#(vyslovit "viz Sharp") je jednoduchý, moderní, objektově orientovaný programovací jazyk, který je typově bezpečný.C# (pronounced "See Sharp") is a simple, modern, object-oriented, and type-safe programming language. C#má své kořeny v řadě jazyků C a bude se okamžitě seznámit s programátory jazyka C C++,, Java a JavaScriptu.C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers. Tato prohlídka poskytuje přehled o hlavních součástech jazyka.This tour provides an overview of the major components of the language. Pokud chcete prozkoumat jazyk pomocí interaktivních příkladů, vyzkoušejte naše Úvod do C# kurzů.If you want to explore the language through interactive examples, try our introduction to C# tutorials.

C#je objektově orientovaný jazyk, ale C# dále zahrnuje podporu pro programování orientované na komponenty .C# is an object-oriented language, but C# further includes support for component-oriented programming. Moderní návrh softwaru se stále spoléhá na softwarové komponenty ve formě integrovaných a samoobslužných balíčků funkcí.Contemporary software design increasingly relies on software components in the form of self-contained and self-describing packages of functionality. Klíč k takovým součástem je, že prezentují programovací model s vlastnostmi, metodami a událostmi. mají atributy, které poskytují deklarativní informace o komponentě. a obsahují vlastní dokumentaci.Key to such components is that they present a programming model with properties, methods, and events; they have attributes that provide declarative information about the component; and they incorporate their own documentation. C#poskytuje jazykové konstrukce pro podporu přímo těchto konceptů C# a vytváří tak velmi přirozený jazyk pro vytváření a používání softwarových komponent.C# provides language constructs to support directly these concepts, making C# a very natural language in which to create and use software components.

Několik C# funkcí pomáhá při konstrukci robustních a odolných aplikací: uvolňování paměti automaticky uvolňuje paměť, kterou zabírá nedosažitelné nepoužívané objekty; zpracování výjimek poskytuje strukturovaný a rozšiřitelný přístup k detekci a obnovení chyb. a typově bezpečný návrh tohoto jazyka znemožňuje čtení z neinicializovaných proměnných, pro indexaci polí nad rámec jejich hranic nebo pro provedení nezaškrtnutých přetypování typu.Several C# features aid in the construction of robust and durable applications: Garbage collection automatically reclaims memory occupied by unreachable unused objects; exception handling provides a structured and extensible approach to error detection and recovery; and the type-safe design of the language makes it impossible to read from uninitialized variables, to index arrays beyond their bounds, or to perform unchecked type casts.

C#má jednotný systém typů.C# has a unified type system. Všechny C# typy, včetně primitivních typů, například int a double, dědí z jednoho kořenového typu object.All C# types, including primitive types such as int and double, inherit from a single root object type. Všechny typy tedy sdílí sadu běžných operací a hodnoty libovolného typu mohou být uloženy, přepravovány a provozovány konzistentním způsobem.Thus, all types share a set of common operations, and values of any type can be stored, transported, and operated upon in a consistent manner. Kromě toho C# podporuje uživatelsky definované typy odkazů i typy hodnot, což umožňuje dynamické přidělování objektů a také vložené úložiště lehkých struktur.Furthermore, C# supports both user-defined reference types and value types, allowing dynamic allocation of objects as well as in-line storage of lightweight structures.

Aby bylo zajištěno, že se programy a knihovny můžou v průběhu času vyvíjejí kompatibilním způsobem, je mnohem zdůrazněno, že C# se v návrhu používá Správa verzí C#.To ensure that C# programs and libraries can evolve over time in a compatible manner, much emphasis has been placed on versioning in C#'s design. Řada programovacích jazyků platíte jenom malým pozornostům tohoto problému. v důsledku toho jsou programy napsané v těchto jazycích častěji využívány, pokud jsou zavedeny novější verze závislých knihoven.Many programming languages pay little attention to this issue, and, as a result, programs written in those languages break more often than necessary when newer versions of dependent libraries are introduced. C#Aspekty návrhu, které byly přímo ovlivněny aspekty správy verzí, zahrnují samostatné modifikátory virtual a override, pravidla pro řešení přetížení metod a podporu explicitních deklarací členů rozhraní.Aspects of C#'s design that were directly influenced by versioning considerations include the separate virtual and override modifiers, the rules for method overload resolution, and support for explicit interface member declarations.

Hello WorldHello world

Program "Hello, World" se tradičně používá k zavedení programovacího jazyka.The "Hello, World" program is traditionally used to introduce a programming language. Tady je C#:Here it is in C#:

using System;

class Hello
{
    static void Main()
    {
        Console.WriteLine("Hello, World");
    }
}

C#zdrojové soubory mají obvykle .cs příponu souboru.C# source files typically have the file extension .cs. Za předpokladu, že program "Hello, World" je uložen v souboru Hello.cs, program může být zkompilován pomocí příkazového řádku:Assuming that the "Hello, World" program is stored in the file hello.cs, the program might be compiled using the command line:

csc hello.cs

který vytváří spustitelné sestavení s názvem Hello. exe.which produces an executable assembly named hello.exe. Výstup vytvořený touto aplikací při spuštění:The output produced by this application when it is run is:

Hello, World

Důležité

Příkaz csc se zkompiluje pro úplné rozhraní a nemusí být k dispozici na všech platformách.The csc command compiles for the full framework, and may not be available on all platforms.

Program "Hello, World" začíná pomocí direktivy using, která odkazuje na obor názvů System.The "Hello, World" program starts with a using directive that references the System namespace. Obory názvů poskytují hierarchické prostředky pro C# uspořádání programů a knihoven.Namespaces provide a hierarchical means of organizing C# programs and libraries. Obory názvů obsahují typy a jiné obory názvů, například obor názvů System obsahuje několik typů, jako je Console třída odkazovaná v programu, a řadu dalších oborů názvů, jako je například IO a Collections.Namespaces contain types and other namespaces—for example, the System namespace contains a number of types, such as the Console class referenced in the program, and a number of other namespaces, such as IO and Collections. Direktiva using, která odkazuje na daný obor názvů, umožňuje nekvalifikované použití typů, které jsou členy tohoto oboru názvů.A using directive that references a given namespace enables unqualified use of the types that are members of that namespace. Z důvodu direktivy using může program používat Console.WriteLine jako zkratku pro System.Console.WriteLine.Because of the using directive, the program can use Console.WriteLine as shorthand for System.Console.WriteLine.

Třída Hello deklarovaná programem "Hello, World" má jednoho člena, metodu s názvem Main.The Hello class declared by the "Hello, World" program has a single member, the method named Main. Metoda Main je deklarována se statickým modifikátorem.The Main method is declared with the static modifier. I když metody instance mohou odkazovat na konkrétní ohraničující objekt instance pomocí klíčového slova this, statické metody pracují bez odkazů na konkrétní objekt.While instance methods can reference a particular enclosing object instance using the keyword this, static methods operate without reference to a particular object. Podle konvence statická metoda s názvem Main slouží jako vstupní bod programu.By convention, a static method named Main serves as the entry point of a program.

Výstup programu je vytvořen metodou WriteLine Console třídy v oboru názvů System.The output of the program is produced by the WriteLine method of the Console class in the System namespace. Tuto třídu poskytují standardní knihovny tříd, které jsou ve výchozím nastavení automaticky odkazovány kompilátorem.This class is provided by the standard class libraries, which, by default, are automatically referenced by the compiler.

Máte spoustu dalších informací o C#.There's a lot more to learn about C#. Následující témata obsahují přehled prvků C# jazyka.The following topics provide an overview of the elements of the C# language. Tato přehledy poskytnou základní informace o všech prvcích jazyka a poskytují informace potřebné k podrobně hlouběji do prvků C# jazyka:These overviews will provide basic information about all elements of the language and give you the information necessary to dive deeper into elements of the C# language:

  • Struktura programuProgram Structure
    • Naučte se klíčové organizační koncepty v C# jazyce: programy, obory názvů, typy, členya sestavení.Learn the key organizational concepts in the C# language: programs, namespaces, types, members, and assemblies.
  • Typy a proměnnéTypes and Variables
    • Přečtěte si o typech hodnot, odkazových typecha proměnných v C# jazyce.Learn about value types, reference types, and variables in the C# language.
  • VýrazyExpressions
    • Výrazy jsou vytvořené z operandů a operátorů.Expressions are constructed from operands and operators. Výrazy vytvoří hodnotu.Expressions produce a value.
  • PříkazyStatements
    • Pomocí příkazů můžete vyjádřit akce programu.You use statements to express the actions of a program.
  • Třídy a objektyClasses and objects
    • Třídy jsou základem C#typů.Classes are the most fundamental of C#'s types. Objekty jsou instancemi třídy.Objects are instances of a class. Třídy jsou sestaveny pomocí členů, které jsou také pokryty v tomto tématu.Classes are built using members, which are also covered in this topic.
  • StrukturyStructs
    • Struktury jsou datové struktury, které jsou na rozdíl od tříd typy hodnot.Structs are data structures that, unlike classes, are value types.
  • PoleArrays
    • Pole je datová struktura, která obsahuje počet proměnných, které jsou dostupné prostřednictvím počítaných indexů.An array is a data structure that contains a number of variables that are accessed through computed indices.
  • RozhraníInterfaces
    • Rozhraní definuje kontrakt, který může být implementován pomocí tříd a struktur.An interface defines a contract that can be implemented by classes and structs. Rozhraní může obsahovat metody, vlastnosti, události a indexery.An interface can contain methods, properties, events, and indexers. Rozhraní neposkytuje implementace členů, které definuje – určuje pouze členy, které musí být poskytnuty třídami nebo strukturami, které implementují rozhraní.An interface does not provide implementations of the members it defines—it merely specifies the members that must be supplied by classes or structs that implement the interface.
  • VýčtyEnums
    • Typ výčtu je jedinečný typ hodnoty se sadou pojmenovaných konstant.An enum type is a distinct value type with a set of named constants.
  • DelegátyDelegates
    • Typ delegáta představuje odkazy na metody s konkrétním seznamem parametrů a návratovým typem.A delegate type represents references to methods with a particular parameter list and return type. Delegáti umožňují zacházet s metodami jako s entitami, které lze přiřadit proměnným a předávat jako parametry.Delegates make it possible to treat methods as entities that can be assigned to variables and passed as parameters. Delegáti jsou podobní pojmu ukazatelů na funkce nalezené v některých jiných jazycích, ale na rozdíl od ukazatelů na funkce jsou delegáti objektově orientované a typově bezpečné.Delegates are similar to the concept of function pointers found in some other languages, but unlike function pointers, delegates are object-oriented and type-safe.
  • AtributyAttributes
    • Atributy umožňují programům určit další deklarativní informace o typech, členech a jiných entitách.Attributes enable programs to specify additional declarative information about types, members, and other entities.