欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 語言入門基礎(chǔ)介紹

 更新時(shí)間:2021年12月24日 09:16:33   投稿:hqx  
這篇文章主要介紹了C# 語言入門基礎(chǔ),c#是一種新式編程語言,不僅面向?qū)ο?,還類型安全,本教程概述了 C# 8 及更高版本中該語言的主要組件。 下面一起進(jìn)入文章了解更多的詳細(xì)內(nèi)容吧

前言:

C#(讀作“See Sharp”)是一種新式編程語言,不僅面向?qū)ο?,還類型安全。 開發(fā)人員利用 C# 能夠生成在 .NET 中運(yùn)行的多種安全可靠的應(yīng)用程序。 C# 源于 C 語言系列,C、C++、Java 和 JavaScript 程序員很快就可以上手使用。 本教程概述了 C# 8 及更高版本中該語言的主要組件。

C# 是面向?qū)ο蟮摹⒚嫦蚪M件的編程語言。 C# 提供了語言構(gòu)造來直接支持這些概念,讓 C# 成為一種非常自然的語言,可用于創(chuàng)建和使用軟件組件。 自誕生之日起,C# 就添加了支持新工作負(fù)載和新興軟件設(shè)計(jì)實(shí)踐的功能。 C# 本質(zhì)上是面向?qū)ο蟮恼Z言。_* 你需要定義類型及其行為。

多項(xiàng) C# 功能有助于創(chuàng)建可靠且持久的應(yīng)用程序。 垃圾回收自動(dòng)回收不可訪問的未用對(duì)象所占用的內(nèi)存。 可以為 null 的類型可防范不引用已分配對(duì)象的變量。 異常處理提供了一種結(jié)構(gòu)化且可擴(kuò)展的方法來進(jìn)行錯(cuò)誤檢測和恢復(fù)。 Lambda 表達(dá)式支持函數(shù)編程技術(shù)。 語言集成查詢 (LINQ) 語法創(chuàng)建一個(gè)公共模式,用于處理來自任何源的數(shù)據(jù)。 異步操作語言支持提供用于構(gòu)建分布式系統(tǒng)的語法。 C# 有統(tǒng)一類型系統(tǒng)。 所有 C# 類型(包括 int double 等基元類型)均繼承自一個(gè)根 object 類型。 所有類型共用一組通用運(yùn)算。 任何類型的值都可以一致地進(jìn)行存儲(chǔ)、傳輸和處理。 此外,C# 還支持用戶定義的引用類型和值類型。 C# 允許動(dòng)態(tài)分配輕型結(jié)構(gòu)的對(duì)象和內(nèi)嵌存儲(chǔ)。 C# 支持泛型方法和類型,因此增強(qiáng)了類型安全性和性能。 C# 可提供迭代器,使集合類的實(shí)現(xiàn)者可以定義客戶端代碼的自定義行為。

C# 強(qiáng)調(diào)版本控制,以確保程序和庫以兼容方式隨時(shí)間推移而變化。 C# 設(shè)計(jì)中受版本控制加強(qiáng)直接影響的方面包括:單獨(dú)的 virtual override 修飾符,關(guān)于方法重載決策的規(guī)則,以及對(duì)顯式接口成員聲明的支持。

一、.NET 體系結(jié)構(gòu)

C# 程序在 .NET 上運(yùn)行,而 .NET 是名為公共語言運(yùn)行時(shí) (CLR) 的虛執(zhí)行系統(tǒng)和一組類庫。 CLR 是 Microsoft 對(duì)公共語言基礎(chǔ)結(jié)構(gòu) (CLI) 國際標(biāo)準(zhǔn)的實(shí)現(xiàn)。 CLI 是創(chuàng)建執(zhí)行和開發(fā)環(huán)境的基礎(chǔ),語言和庫可以在其中無縫地協(xié)同工作。

用 C# 編寫的源代碼被編譯成符合 CLI 規(guī)范的中間語言 (IL)。 IL 代碼和資源(如位圖和字符串)存儲(chǔ)在擴(kuò)展名通常為 .dll 的程序集中。 程序集包含一個(gè)介紹程序集的類型、版本和區(qū)域性的清單。

執(zhí)行 C# 程序時(shí),程序集將加載到 CLR。 CLR 會(huì)直接執(zhí)行實(shí)時(shí) (JIT) 編譯,將 IL 代碼轉(zhuǎn)換成本機(jī)指令。 CLR 可提供其他與自動(dòng)垃圾回收、異常處理和資源管理相關(guān)的服務(wù)。 由 CLR 執(zhí)行的代碼有時(shí)稱為“托管代碼”。 “非托管代碼”編譯為面向特定平臺(tái)的本機(jī)語言。

語言互操作性是 .NET 的一項(xiàng)重要功能。 C# 編譯器生成的 IL 代碼符合公共類型規(guī)范 (CTS)。 通過 C# 生成的 IL 代碼可以與通過 .NET 版本的 F#、Visual Basic、C++ 生成的代碼進(jìn)行交互。 還有 20 多種與 CTS 兼容的語言。 單個(gè)程序集可包含多個(gè)用不同 .NET 語言編寫的模塊。 這些類型可以相互引用,就像它們是用同一種語言編寫的一樣。

除了運(yùn)行時(shí)服務(wù)之外,.NET 還包含大量庫。 這些庫支持多種不同的工作負(fù)載。 它們已整理到命名空間中,這些命名空間提供各種實(shí)用功能。 這些功能包括文件輸入輸出、字符串控制、XML 分析、Web 應(yīng)用程序框架和 Windows 窗體控件。 典型的 C# 應(yīng)用程序廣泛使用 .NET 類庫來處理常見的“管道”零碎工作。

二、Hello world

“Hello, World”程序歷來都用于介紹編程語言。

下面展示了此程序的 C# 代碼:

using System;

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


“Hello, World”程序始于引用 System 命名空間的 using 指令。 命名空間提供了一種用于組織 C# 程序和庫的分層方法。 命名空間包含類型和其他命名空間。例如,System 命名空間包含許多類型(如程序中引用的 Console 類)和其他許多命名空間(如 IO 和 Collections)。 借助引用給定命名空間的 using 指令,可以非限定的方式使用作為相應(yīng)命名空間成員的類型。 由于使用 using 指令,因此程序可以使用 Console.WriteLine 作為 System.Console.WriteLine 的簡寫。

“Hello, World”程序聲明的 Hello 類只有一個(gè)成員,即 Main 方法。 Main 方法使用 static 修飾符進(jìn)行聲明。 實(shí)例方法可以使用關(guān)鍵字 this 引用特定的封閉對(duì)象實(shí)例,而靜態(tài)方法則可以在不引用特定對(duì)象的情況下運(yùn)行。 按照約定,Main 靜態(tài)方法是 C# 程序的入口點(diǎn)。

程序的輸出是由 System 命名空間中 Console 類的 WriteLine 方法生成。 此類由標(biāo)準(zhǔn)類庫提供。默認(rèn)情況下,編譯器會(huì)自動(dòng)引用標(biāo)準(zhǔn)類庫。

三、類型和變量

類型定義 C# 中的任何數(shù)據(jù)的結(jié)構(gòu)和行為。 類型的聲明可以包含其成員、基類型、它實(shí)現(xiàn)的接口和該類型允許的操作。 變量是用于引用特定類型的實(shí)例的標(biāo)簽。

C# 有兩種類型:值類型 和 引用類型。 值類型的變量直接包含它們的數(shù)據(jù)。 引用類型的變量存儲(chǔ)對(duì)數(shù)據(jù)(稱為“對(duì)象”)的引用。 對(duì)于引用類型,兩個(gè)變量可以引用同一個(gè)對(duì)象;對(duì)一個(gè)變量執(zhí)行的運(yùn)算可能會(huì)影響另一個(gè)變量引用的對(duì)象。 借助值類型,每個(gè)變量都有自己的數(shù)據(jù)副本;因此,對(duì)一個(gè)變量執(zhí)行的運(yùn)算不會(huì)影響另一個(gè)變量(ref 和 out 參數(shù)變量除外)。

標(biāo)識(shí)符為變量名稱。 標(biāo)識(shí)符是不包含任何空格的 unicode 字符序列。 如果標(biāo)識(shí)符的前綴為 @,則該標(biāo)識(shí)符可以是 C# 保留字。 在與其他語言交互時(shí),使用保留字作為標(biāo)識(shí)符很有用。

C# 的值類型進(jìn)一步分為:簡單類型、枚舉類型、結(jié)構(gòu)類型、可以為 null 的值類型和元組值類型。 C# 引用類型又細(xì)分為類類型、接口類型、數(shù)組類型和委托類型。

C# 程序使用 類型聲明 創(chuàng)建新類型。 類型聲明指定新類型的名稱和成員。 用戶可定義以下六種 C# 類型:類類型、結(jié)構(gòu)類型、接口類型、枚舉類型、委托類型和元組值類型。 還可以聲明 record 類型(record struct record class)。 記錄類型具有編譯器合成成員。 記錄主要用于存儲(chǔ)值,關(guān)聯(lián)行為最少。

class 類型定義包含數(shù)據(jù)成員(字段)和函數(shù)成員(方法、屬性及其他)的數(shù)據(jù)結(jié)構(gòu)。 類類型支持單一繼承和多形性,即派生類可以擴(kuò)展和專門針對(duì)基類的機(jī)制。
struct 類型定義包含數(shù)據(jù)成員和函數(shù)成員的結(jié)構(gòu),這一點(diǎn)與類類型相似。 不過,與類不同的是,結(jié)構(gòu)是值類型,通常不需要進(jìn)行堆分配。 結(jié)構(gòu)類型不支持用戶指定的繼承,并且所有結(jié)構(gòu)類型均隱式繼承自類型 object。
interface 類型將協(xié)定定義為一組已命名的公共成員。 實(shí)現(xiàn) interface class struct 必須提供接口成員的實(shí)現(xiàn)代碼。 interface 可以繼承自多個(gè)基接口,class 和 struct 可以實(shí)現(xiàn)多個(gè)接口。
delegate 類型表示引用包含特定參數(shù)列表和返回類型的方法。 通過委托,可以將方法視為可分配給變量并可作為參數(shù)傳遞的實(shí)體。 委托類同于函數(shù)式語言提供的函數(shù)類型。 它們還類似于其他一些語言中存在的“函數(shù)指針”概念。 與函數(shù)指針不同,委托是面向?qū)ο笄翌愋桶踩摹?br /> classstruct、interface delegate 類型全部都支持泛型,因此可以使用其他類型對(duì)它們進(jìn)行參數(shù)化。

C# 支持任意類型的一維和多維數(shù)組。 與上述類型不同,數(shù)組類型無需先聲明即可使用。 相反,數(shù)組類型是通過在類型名稱后面添加方括號(hào)構(gòu)造而成。 例如,int[] 是 int 類型的一維數(shù)組,int[,] 是 int 類型的二維數(shù)組,int[][] 是由 int 類型的一維數(shù)組或“交錯(cuò)”數(shù)組構(gòu)成的一維數(shù)組。

可以為 null 的類型不需要單獨(dú)定義。 對(duì)于所有不可以為 null 的類型 T,都有對(duì)應(yīng)的可以為 null 的類型 T?,后者可以包含附加值 null。 例如,int? 是可保存任何 32 位整數(shù)或 null 值的類型,string? 是可以保存任何 string 或 null 值的類型。

C# 采用統(tǒng)一的類型系統(tǒng),因此任意類型的值都可視為 object。 每種 C# 類型都直接或間接地派生自 object 類類型,而 object 是所有類型的最終基類。 只需將值視為類型 object,即可將引用類型的值視為對(duì)象。 通過執(zhí)行 裝箱 和 取消裝箱操作,可以將值類型的值視為對(duì)象。 在以下示例中,int 值被轉(zhuǎn)換成 object,然后又恢復(fù)成 int。

int i = 123;
object o = i;    // Boxing
int j = (int)o;  // Unboxing


將值類型的值分配給 object 對(duì)象引用時(shí),會(huì)分配一個(gè)“箱”來保存此值。 該箱是引用類型的實(shí)例,此值會(huì)被復(fù)制到該箱。 相反,當(dāng) object 引用被顯式轉(zhuǎn)換成值類型時(shí),將檢查引用的 object 是否是具有正確值類型的箱。 如果檢查成功,則會(huì)將箱中的值復(fù)制到值類型。

C# 的統(tǒng)一類型系統(tǒng)實(shí)際上意味著“按需”將值類型視為 object 引用。 鑒于這種統(tǒng)一性,使用類型 object 的常規(guī)用途庫可以與派生自 object 的所有類型結(jié)合使用,包括引用類型和值類型。

C# 有多種 變量,其中包括字段、數(shù)組元素、局部變量和參數(shù)。 變量表示存儲(chǔ)位置。 每個(gè)變量都具有一種類型,用于確定可以在變量中存儲(chǔ)哪些值,

如下文所述:

不可以為 null 的值類型

  • 具有精確類型的值

可以為 null 的值類型

  • null 值或具有精確類型的值

object

  • null 引用、對(duì)任意引用類型的對(duì)象的引用,或?qū)θ我庵殿愋偷难b箱值的引用

類類型

  • null 引用、對(duì)類類型實(shí)例的引用,或?qū)ε缮灶愵愋偷念悓?shí)例的引用

接口類型

  • null 引用、對(duì)實(shí)現(xiàn)接口類型的類類型實(shí)例的引用,或?qū)?shí)現(xiàn)接口類型的值類型的裝箱值的引用

數(shù)組類型

  • null 引用、對(duì)數(shù)組類型實(shí)例的引用,或?qū)嫒莸臄?shù)組類型實(shí)例的引用

委托類型

  • null 引用或?qū)嫒莸奈蓄愋蛯?shí)例的引用

四、程序結(jié)構(gòu)

C# 中的關(guān)鍵組織結(jié)構(gòu)概念包括程序、命名空間、類型、成員和程序集* 。 程序聲明類型,而類型則包含成員,并被整理到命名空間中。 類型示例包括類、結(jié)構(gòu)和接口。 成員示例包括字段、方法、屬性和事件。 編譯完的 C# 程序?qū)嶋H上會(huì)打包到程序集中。 程序集的文件擴(kuò)展名通常為 .exe 或 .dll,具體視其分別實(shí)現(xiàn)的是應(yīng)用程序還是庫_***而定。

作為一個(gè)小示例,請考慮包含以下代碼的程序集:

namespace Acme.Collections;

public class Stack<T>
{
    Entry _top;

    public void Push(T data)
    {
        _top = new Entry(_top, data);
    }

    public T Pop()
    {
        if (_top == null)
        {
            throw new InvalidOperationException();
        }
        T result = _top.Data;
        _top = _top.Next;

        return result;
    }

    class Entry
    {
        public Entry Next { get; set; }
        public T Data { get; set; }

        public Entry(Entry next, T data)
        {
            Next = next;
            Data = data;
        }
    }
}

此類的完全限定的名稱為 Acme.Collections.Stack。

?此類包含多個(gè)成員:一個(gè) _top 字段、兩個(gè)方法(Push 和 Pop)和一個(gè) Entry 嵌套類。 Entry 類還包含三個(gè)成員:一個(gè)名為 Next 的屬性、一個(gè)名為 Data 的屬性和一個(gè)構(gòu)造函數(shù)。 Stack 是泛型類。 它具有一個(gè)類型參數(shù) T,在使用時(shí)替換為具體類型。

堆棧是一個(gè)“先進(jìn)后出”(FILO) 集合。 添加到堆棧頂部的新元素。 刪除元素時(shí),將從堆棧頂部刪除該元素。 前面的示例聲明定義堆棧的存儲(chǔ)和行為的 Stack 類型。 可以聲明一個(gè)引用 Stack 類型的實(shí)例的變量來使用該功能。

程序集包含中間語言 (IL) 指令形式的可執(zhí)行代碼和元數(shù)據(jù)形式的符號(hào)信息。 執(zhí)行前,.NET 公共語言運(yùn)行時(shí)的實(shí)時(shí) (JIT) 編譯器會(huì)將程序集中的 IL 代碼轉(zhuǎn)換為特定于處理器的代碼。

由于程序集是包含代碼和元數(shù)據(jù)的自描述功能單元,因此無需在 C# 中使用 #include 指令和頭文件。 只需在編譯程序時(shí)引用特定的程序集,即可在 C# 程序中使用此程序集中包含的公共類型和成員。

例如,此程序使用 acme.dll 程序集中的 Acme.Collections.Stack 類:

class Example
{
    public static void Main()
    {
        var s = new Acme.Collections.Stack<int>();
        s.Push(1); // stack contains 1
        s.Push(10); // stack contains 1, 10
        s.Push(100); // stack contains 1, 10, 100
        Console.WriteLine(s.Pop()); // stack contains 1, 10
        Console.WriteLine(s.Pop()); // stack contains 1
        Console.WriteLine(s.Pop()); // stack is empty
    }
}


若要編譯此程序,需要引用包含前面示例中定義的堆棧類的程序集。

C# 程序可以存儲(chǔ)在多個(gè)源文件中。 在編譯 C# 程序時(shí),將同時(shí)處理所有源文件,并且源文件可以自由地相互引用。 從概念上講,就好像所有源文件在被處理之前都連接到一個(gè)大文件。 在 C# 中永遠(yuǎn)都不需要使用前向聲明,因?yàn)槁暶黜樞驘o關(guān)緊要(極少數(shù)例外情況除外)。 C# 并不限制源文件只能聲明一種公共類型,也不要求源文件的文件名必須與其中聲明的類型相匹配。

到此這篇關(guān)于C# 語言入門基礎(chǔ)介紹的文章就介紹到這了,更多相關(guān)C# 語言介紹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論