国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C#核心筆記——(一)C#和.NET Framework

這篇具有很好參考價(jià)值的文章主要介紹了C#核心筆記——(一)C#和.NET Framework。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

C#是一種通用的,類(lèi)型安全的面向?qū)ο缶幊陶Z(yǔ)言。其目標(biāo)是提高程序員生產(chǎn)力。

一.面向?qū)ο?/h2>

C#實(shí)現(xiàn)了豐富的面向?qū)ο蠓妒?,包括封裝、繼承、多態(tài)。

C#面向?qū)ο筇匦园ǎ?br> 統(tǒng)一的類(lèi)型系統(tǒng)
類(lèi)與接口
屬性、方法、事件
C#支持純函數(shù)模式

二、類(lèi)型安全性

C#是一門(mén)類(lèi)型安全的語(yǔ)言。例如:C#不允許將字符串類(lèi)型作為整數(shù)類(lèi)型處理。

C#支持類(lèi)型靜態(tài)化。能夠在程序運(yùn)行前排除大量錯(cuò)誤。

C#允許使用dynamic關(guān)鍵字動(dòng)態(tài)定義指定類(lèi)型。然而C#在大多情況下仍然是一門(mén)靜態(tài)語(yǔ)言。

C#還是一門(mén)強(qiáng)類(lèi)型語(yǔ)言。

三、內(nèi)存管理

C#依靠運(yùn)行時(shí)來(lái)實(shí)現(xiàn)自動(dòng)內(nèi)存管理。公共語(yǔ)言運(yùn)行時(shí)的垃圾回收器會(huì)作為程序的一部分運(yùn)行。

C#并未拋棄指針,關(guān)鍵字unsafe的程序塊顯式內(nèi)存分配。

四、平臺(tái)支持

Linux、macOS、iOS、Android

五、CLR

公共語(yǔ)言運(yùn)行時(shí)(Common Language Runtime,CLR),如自動(dòng)化內(nèi)存管理和異常處理。

C#也會(huì)將代碼編譯為托管代碼。托管代碼以中間語(yǔ)言(Intermediate Language,IL)的形式表示。CRL通常會(huì)在執(zhí)行前,將IL轉(zhuǎn)換為機(jī)器(如x84、x64)原生代碼,稱(chēng)為即時(shí)(Just-In-Time)編譯。

六、.NET Framework

.NET Framework是由CLR和大量的程序庫(kù)組成。

七、其他框架

UWP
.Net Core
ASP.NET Core
Xamarin

八、簡(jiǎn)史

8.1C# 7.0新特性

8.1.1 數(shù)字字面的改進(jìn)

下劃線(xiàn)改善可讀性:

int million = 1_000_000;

二進(jìn)制字面量使用Ob前綴來(lái)標(biāo)識(shí):

int a = 0b1001_0000;
var b = 0b1001_0000;

8.1.2 輸出變量及參數(shù)忽略

調(diào)用含有out參數(shù)的方法將更加容易:

bool successful = int.TryParse("123", out int result);
Console.WriteLine(result);

當(dāng)調(diào)用含有多個(gè)out參數(shù)方法時(shí),可以使用下劃線(xiàn)字符_忽略你并不關(guān)心的參數(shù):

方法

static void SimpleMethod(out int result,out int result2 ,out int result3)
{
    result = 1 + 1;
    result2 = 2 + 2;
    result3 = 3 + 3;
}

調(diào)用

SimpleMethod(out _, out _, out int result2);

8.1.3 模式

is運(yùn)算符也可以自然的引入變量,稱(chēng)為模式變量

方法

static void SimpleMethod2(object x)
{
    if(x is string s)
    {
        Console.WriteLine(s.Length);
    }
}

調(diào)用

SimpleMethod2("大家好呀");

同樣 switch語(yǔ)句也同樣支持模式??梢允褂脀hen子句來(lái)判斷條件,或是直接選擇null;

方法

static void SimpleMethod3(object? x)
        {
            switch(x)
            {
                case int i:
                    Console.WriteLine("It is an int"); 
                    break;
                case string s:
                    Console.WriteLine(s.Length);
                    break;
                    case bool b when b == true :
                    Console.WriteLine("True");
                    break;
                case null:
                    Console.WriteLine("It is null");
                    break;
            }
        }

調(diào)用

SimpleMethod3(12);
SimpleMethod3("12");
SimpleMethod3(true);
SimpleMethod3(null);

8.1.4 局部方法

局部方法是聲明在其他函數(shù)內(nèi)部的方法

static void WriteCubes()
{
    Console.WriteLine(Cubu(3));
    Console.WriteLine(Cubu(4));
    Console.WriteLine(Cubu(5));

    int Cubu(int value) => value * value * value;
}

8.1.5 更多的表達(dá)式體成員

C#6引入了以”胖箭頭“語(yǔ)法表示的表達(dá)式的方法,只讀屬性、運(yùn)算符以及索引器。而C#7更將其擴(kuò)展到了構(gòu)造函數(shù)、讀/寫(xiě)屬性和終結(jié)器中:

類(lèi):

 public class Person : IAsyncDisposable
    {
        string? name;
        public Person(string? name) => Name = name;

        public string? Name
        {
            get => name;
            set => name = value ?? "";
        }

        public ValueTask DisposeAsync()
        {
            Console.WriteLine("Dispose");
            return ValueTask.CompletedTask;
        }
    }

方法:

 static async void PersonDispose()
        {
            await AsyncPersonDispose();
        }

        static async Task AsyncPersonDispose()
        {
            await using (Person p = new Person("小米"))
            {
                Console.WriteLine(p.Name);
            }
        }

8.1.6 解構(gòu)器

C#7引入了結(jié)構(gòu)器模式。構(gòu)造器一般接受一系列(作為參數(shù))并將其賦值給字段,而結(jié)構(gòu)器則正相反,它將字段反向賦值給變量。
類(lèi)

public class Dog
    {
        string? name;
        public Dog(string? name) => Name = name;

        public string? Name
        {
            get => name;
            set => name = value ?? "";
        }

        public void Deconstruct(out string firstName,out string lastName)
        {
            int spacePos = name.IndexOf(' ');
            firstName = name.Substring(0, spacePos);
            lastName = name.Substring(spacePos + 1);
        }
    }

調(diào)用

var joe = new Dog("joe Bloggs");
var(first,last)=joe;
Console.WriteLine(first);
Console.WriteLine(last);

8.1.7 元組

C# 7 改進(jìn)當(dāng)屬顯示的元組(tuple)支持,元組提供了一系列相關(guān)值的簡(jiǎn)單方式:

var bob = ("Bob", 23);
Console.WriteLine(bob.Item1);
Console.WriteLine(bob.Item2);

C#的新元組實(shí)質(zhì)上是使用了System.ValueTuple<…>泛型結(jié)構(gòu)的語(yǔ)法糖。
我們還可以對(duì)元組的元素命名:

var tuple = (Name: "Bob", Age: 23);
Console.WriteLine(tuple.Name);
Console.WriteLine(tuple.Age);

有了元組函數(shù)再也不用通過(guò)一系列out參數(shù)來(lái)返回多個(gè)值了:

static (int row, int colum) GetFilePosition() => (3, 10);
var pos = GetFilePosition();
Console.WriteLine(pos.row);
Console.WriteLine(pos.colum);

元組隱式的支持解構(gòu)模式

(int row,int column) = GetFilePosition();
Console.WriteLine(row);
Console.WriteLine(column);

8.1.7 thow表達(dá)式

現(xiàn)在它可以出現(xiàn)在表達(dá)式體函數(shù)中

public string Foo() => throw new NotImplementedException();

thow表達(dá)式也可以出現(xiàn)在三無(wú)判斷運(yùn)行符中:
方法

static string Capotalize(string? value) =>
    value == null ? throw new ArgumentException("Value") :
    value == "" ? "" :
    char.ToUpper(value[0]) + value.Substring(1);

調(diào)用

Console.WriteLine(Capotalize(null)); 

8.2 C# 6.0新特性

null條件(“Elvis”)運(yùn)算符,可以避免在調(diào)用方法或訪(fǎng)問(wèn)類(lèi)型的成員之前顯式地編寫(xiě)用于null判斷的語(yǔ)句。如下result將會(huì)為null而不會(huì)拋出NullReferenceException:

System.Text.StringBuilder sb = null;
string result = sb?.ToString();

lambda表達(dá)式

public int TimesTwo(int x) => x * 2;
public string someProperty => "Property value";

屬性初始化器可以對(duì)自動(dòng)屬性進(jìn)行初始賦值:

public DateTime TimeCreated { get; set; } = DateTime.Now;

這種初始化也支持只讀屬性:

public DateTime TimeCreated { get; } = DateTime.Now;

只讀屬性也可以在構(gòu)造器中賦值。

索引初始化器可以一次性初始化具有索引器的任意類(lèi)型:

var dict = new Dictionary<int, string>()
{
    [3] = "three",
    [20] = "ten"
};

字符串插值用更加簡(jiǎn)單的方式替代了string.Format:

string s = $"It is {DateTime.Now}";
Console.WriteLine(s);

異常過(guò)濾器,可以在catch上再加一個(gè)條件:

string html;
try
{
    html = new WebClient().DownloadString("http://asef");
}
catch(WebException ex) when(ex.Status == WebExceptionStatus.Timeout)
{

}

using static 指令可以引入一個(gè)類(lèi)型的所有靜態(tài)成員,這樣就可以不用寫(xiě)類(lèi)型而直接使用這些成員:

using static System.Console;
WriteLine("Hello world");

nameof運(yùn)算符返回變量、類(lèi)型或者其他符號(hào)的名稱(chēng),這樣可以避免變量重命名造成不一致的代碼:

int capacity = 123;
string x = nameof(capacity);
Console.WriteLine(x);

值得一提的是C# 6.0可以在catch和finally塊中使用 await.

8.3 C# 5.0新特性

async和await,支持異步功能,有利于編寫(xiě)高并發(fā)和高效的I/O密集型應(yīng)用程序。

8.4 C# 4.0新特性

1.動(dòng)態(tài)綁定
2.可選參數(shù)和命名參數(shù)
3.用泛型接口和委托實(shí)現(xiàn)類(lèi)型變化
4.改進(jìn)COM互操作性

8.5 C# 3.0新特性

隱式局部變量、匿名類(lèi)型、對(duì)象構(gòu)造器、lambda表達(dá)式、擴(kuò)展方法、查詢(xún)表達(dá)式、表達(dá)式數(shù)。

8.5 C# 2.0新特性

泛型、可空類(lèi)型、匿名方法、分部類(lèi)、靜態(tài)類(lèi)

下一篇: C#核心筆記——(二)C#語(yǔ)言基礎(chǔ)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-719737.html

到了這里,關(guān)于C#核心筆記——(一)C#和.NET Framework的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 開(kāi)篇-.net與.net framework和C#的關(guān)系與區(qū)別,歷史沿革

    開(kāi)篇-.net與.net framework和C#的關(guān)系與區(qū)別,歷史沿革

    這是很多人容易混淆的一個(gè)概念,稍微解釋一下: C#是Microsoft開(kāi)發(fā)的一種編程語(yǔ)言(和你看到的c,asm,java,Python一樣),其前身就是一路從C-c+±C#逐漸升級(jí)過(guò)來(lái)的,有很多相似性,但是互相之間又很多不同。 .NET framwork是Microsoft的軟件開(kāi)發(fā)框架,主要針對(duì)Microsoft Windows操作系

    2024年02月05日
    瀏覽(26)
  • C#安裝“Windows 窗體應(yīng)用(.NET Framework)”

    C#安裝“Windows 窗體應(yīng)用(.NET Framework)”

    目錄 背景: 第一步: 第二步: 第三步: 總結(jié): 如下圖所示:在Visual Studio Installer創(chuàng)建新項(xiàng)目的時(shí)候,想要添加windows窗體應(yīng)用程序,發(fā)現(xiàn)里面并沒(méi)有找到Windows窗體應(yīng)用(.NET Framework)模板,快捷搜索也沒(méi)有發(fā)現(xiàn),那么為什么沒(méi)有找到這個(gè)模板,可能程序未曾安裝這個(gè)模板,那接下來(lái)就

    2024年02月10日
    瀏覽(18)
  • 【c#,.NET】Entity Framework Core基礎(chǔ)詳解

    【c#,.NET】Entity Framework Core基礎(chǔ)詳解

    目錄 ? 一、EF Core概述 1.1 什么是ORM?? 1.2 EF Core的性能怎么樣? 二、EF Core入門(mén) 2.1 什么是Migration數(shù)據(jù)庫(kù)遷移: 2.2? EF Core數(shù)據(jù)的增刪改查 2.2.1 增加數(shù)據(jù) 2.2.2 查詢(xún)數(shù)據(jù) ?2.2.3 修改和刪除數(shù)據(jù) 三、EF Core的實(shí)體類(lèi)配置 3.1 約定大于配置 3.2 EF Core兩種配置方式 3.2.1 Data Annotation 3.2.2?

    2024年02月04日
    瀏覽(51)
  • 【C#】.Net Framework框架下的Authorize權(quán)限類(lèi)

    【C#】.Net Framework框架下的Authorize權(quán)限類(lèi)

    2023年,第31周,第3篇文章。給自己一個(gè)目標(biāo),然后堅(jiān)持總會(huì)有收貨,不信你試試! 在C#的.NET Framework中,你可以使用 Authorize 類(lèi)來(lái)處理權(quán)限認(rèn)證。 Authorize 類(lèi)位于 System.Web.Mvc 命名空間中,它提供了一種簡(jiǎn)單的方式來(lái)限制對(duì)控制器中的操作方法的訪(fǎng)問(wèn)。 要在控制器中使用權(quán)限認(rèn)

    2024年02月13日
    瀏覽(23)
  • 【C#】.Net Framework框架下使用SQLike以及基本概念

    【C#】.Net Framework框架下使用SQLike以及基本概念

    2023年,第32周,第2篇文章。給自己一個(gè)目標(biāo),然后堅(jiān)持總會(huì)有收貨,不信你試試! 在C#的.NET Framework框架下,有很多輕量級(jí)數(shù)據(jù)庫(kù)選擇,比如:SQLike就是其中一款,一起來(lái)了解SQLike的簡(jiǎn)單使用吧。 輕量級(jí)數(shù)據(jù)庫(kù)是指具有較小的存儲(chǔ)需求、資源消耗較低、易于部署和使用的數(shù)據(jù)

    2024年02月11日
    瀏覽(20)
  • C# .NET 7.0和Framework 4.8兩個(gè)框架的區(qū)別

    C# .NET 7.0和Framework 4.8兩個(gè)框架的區(qū)別

    .NET 7.0和Framework 4.8是微軟開(kāi)發(fā)的兩個(gè)不同版本的框架,用于構(gòu)建和運(yùn)行應(yīng)用程序。雖然它們都是用于C#編程語(yǔ)言的,但它們?cè)诠δ芎托阅芊矫嬗幸恍﹨^(qū)別。 首先,讓我們來(lái)看一下.NET 7.0的一些新功能和改進(jìn)。.NET 7.0是.NET的最新版本,它引入了許多新的功能和改進(jìn),以提高開(kāi)發(fā)

    2024年02月13日
    瀏覽(20)
  • [C#]vs2022安裝后C#創(chuàng)建winform沒(méi)有.net framework4.8

    [C#]vs2022安裝后C#創(chuàng)建winform沒(méi)有.net framework4.8

    問(wèn)題,我已經(jīng)在visualstudio安裝程序中安裝了.net框架4.8的SDK和運(yùn)行時(shí)。 然而,我在visual studio 2022中找不到已安裝的框架。 我已經(jīng)檢查了我的VS 2019,它可以很好地定位網(wǎng)絡(luò)框架4.8,它可以構(gòu)建我的項(xiàng)目。但VS 2022不能。 我已經(jīng)重新安裝了VS 2022和VS 2019,但VS 2022仍然找不到我的框

    2024年02月07日
    瀏覽(27)
  • 【C# .NET 】使用 Entity Framework Core 操作sqlite數(shù)據(jù)庫(kù)

    添加包 EF Core design package? ?NuGet Gallery | Home 使用用于?EF Core 遷移和現(xiàn)有數(shù)據(jù)庫(kù)中的反向工程(基架)的工具需要安裝相應(yīng)的工具包: 可在 Visual Studio?包管理器控制臺(tái)中使用的 PowerShell 工具的?Microsoft.EntityFrameworkCore.Tools 跨平臺(tái)命令行工具的?dotnet-ef?和?Microsoft.EntityFramewor

    2024年02月14日
    瀏覽(25)
  • C#打包部署并把.net framework框架也打到安裝包里

    C#打包部署并把.net framework框架也打到安裝包里

    提示:C#打包部署并把.net framework框架也打到安裝包里 VS2022默認(rèn)是沒(méi)有打包部署Installer程序的需要手動(dòng)安裝,下面提供兩種安裝Installer的方法: 打開(kāi)VS2022后找到菜單欄 工具-擴(kuò)展和更新-聯(lián)機(jī),搜索下載安裝Installer。 1.1 下載Microsoft Visual Studio Installer Projects插件 搜索框中聯(lián)機(jī)搜索

    2024年02月07日
    瀏覽(72)
  • c# .net framework 實(shí)現(xiàn)微信支付v3 h5支付 簽名 驗(yàn)簽

    c# .net framework 實(shí)現(xiàn)微信支付v3 h5支付 簽名 驗(yàn)簽

    接口文檔:微信支付-開(kāi)發(fā)者文檔 (qq.com) ?? 遇到的問(wèn)題有 ??1、簽名老驗(yàn)證不過(guò)去 : ?? ??生成的簽名老驗(yàn)證不過(guò)? ? n 不要加轉(zhuǎn)義符 ??2、 發(fā)送的請(qǐng)求老是400? 使用工具請(qǐng)求正常。代碼不行。 ??UserAgent = \\\"m.cnblogs.com/WebRequest\\\";? ??不要留空就行 網(wǎng)址可填自己的

    2024年02月05日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包