日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#3.0语法新特性集合

發(fā)布時間:2025/3/15 C# 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#3.0语法新特性集合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

隱式類型局部變量

  C#3.0提供了一個新的關(guān)鍵字var,使用該關(guān)鍵字,編譯器會根據(jù)用于初始化局部變量的初始值推斷出變量的數(shù)據(jù)類型。

  示例代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestVar
{
class Program
{
static void Main(string[] args)
{
//定義int數(shù)組
int[] intAry = new int[] { 1, 2, 3, 4, 5, 6 };

//var varSet = intAry.Where(x => x > 3);
//執(zhí)行Linq查詢
var varSet = from i in intAry where i > 3 select i;

//遍歷查詢結(jié)果
foreach (var v in varSet)
{
Console.WriteLine(v);
}

//輸出varSet的類型名稱與命名空間
Console.WriteLine(varSet.GetType().Name);
Console.WriteLine(varSet.GetType().Namespace);

Console.ReadKey();
}
}
}

  運行結(jié)果如下:

  使用隱式類型變量的限制:

  1. 隱式類型只能用于方法或?qū)傩詢?nèi)局部變量的聲明,不能用var來定義返回值、參數(shù)的類型或類型的數(shù)據(jù)成員。

  2. 使用var進行聲明的局部變量必須在聲明時進行賦值,且不能以null為初始值。

  隱式類型局部變量最終會產(chǎn)生強類型數(shù)據(jù)。實際上,編譯器在編譯時,會為隱式類型局部變量推斷出一個數(shù)據(jù)類型,所以最終的IL代碼中,這個變量的類型已經(jīng)被確定了。

  為什么需要隱式類型變量?

  主要是為了與Linq查詢技術(shù)相結(jié)合,我們也只有在定義Linq查詢返回的數(shù)據(jù)時才應(yīng)用使用var關(guān)鍵字。

自動屬性

  示例代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestVar
{
class AutoProperty
{
public string Name { get; private set; }

public AutoProperty() { }
}
}

  上例中使用自動屬性語法為AutoProperty創(chuàng)建了一個名為Name,類型為string的屬性。該屬性的get方法為public,set方法為private。

擴展方法

  擴展方法用于對一個現(xiàn)成類型進行擴展,而不去修改現(xiàn)成類型的源碼。

  示例代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestVar
{
public static class Extend
{
//第一個參數(shù)指定對String類型進行擴展
public static string ReplaceA(this string str, string destStr)
{
//將大寫字母A轉(zhuǎn)換為指定字串
return str.Replace("A", destStr);
}
}
}

  上例中對String類型進行擴展,將字串中的大寫字母A轉(zhuǎn)換為指定字串。定義時必須注意,擴展方法必須在非泛型靜態(tài)類中定義,且擴展方法也必須是靜態(tài)的。使用時,必須導(dǎo)入擴展方法所在的命名空間。

  上例的使用方法:"AAAA".ReplaceA("B");  //將大寫字母A轉(zhuǎn)換為B

  其實擴展方法被編譯后,在IL代碼中只不過將目標類型上的擴展方法調(diào)用轉(zhuǎn)換為了對靜態(tài)擴展方法的直接調(diào)用。

分部方法

  C#3.0中擴大了partial關(guān)鍵字使用的范圍,我們可以把它應(yīng)用在方法級別。它允許我們在一個文件中構(gòu)建方法原型,而在另一個文件中實現(xiàn)。但有諸多限制:

  1. 分部方法只可以定義在分部類中。

  2. 分部方法必須返回void類型。

  3. 分部方法參數(shù)不能有out修飾符。

  4. 分部方法總是隱式私有的,這個限制比較大,所以分部方法很少使用。

  示例語法:

  定義:partial void PartialMethod(string str);

  實現(xiàn):partial void PartialMethod(string str) { ...... }

對象初始化器

  我們可以使用對象初始化器為對象的初始化工作簡化語法。

  示例:

class ClassA
{
public int X { get; set; }
public int Y { get; set; }

public ClassA(int x)
{
X
= x;
}
}

static void Main(string[] args)
{
//普通類對象初始化,使用對象初始化器為Y賦值
ClassA a = new ClassA(1) { Y = 2 };

//集合的初始化
List<Point> points = new List<Point>
{
new Point { X = 2, Y = 2 },
new Point { X = 3, Y = 3 },
};

Console.ReadKey();
}

匿名類型

  有時我們可能需要定義類來封裝一些臨時數(shù)據(jù),但并不需要任何關(guān)聯(lián)的方法、事件和其他自定義功能。這時我們可以使用匿名類型。

  所有匿名類型都自動繼承System.Object,我們可以在匿名類型對象上調(diào)用ToString、GetHashCode、Equals、GetType方法。

  示例代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestVar
{
class Program
{
static void Main(string[] args)
{
//定義兩個匿名類型對象,屬性名稱、值均相同
var firstCar = new { Color = "Red", Name = "BMW" };
var secondCar
= new { Color = "Red", Name = "BMW" };

//Object.Equals方法比較兩個匿名類型對象是否相等
Console.WriteLine(firstCar.Equals(secondCar));
//使用==操作符比較兩個匿名類型對象是否相等
Console.WriteLine(firstCar == secondCar);
//比較兩個匿名類型是否同一類型
Console.WriteLine(firstCar.GetType().Name == secondCar.GetType().Name);

Console.ReadKey();
}
}
}

  該代碼輸出如下圖:

  上例中可看出我們使用Euqals比較兩個匿名類型對象返回了true,這是因為編譯器重寫了匿名類型的Equals方法,比較了匿名類型每一個數(shù)據(jù)成員的值。但在使用==操作符比較時,卻得出了false,這是因為匿名類型沒有重載==操作符,所以==操作符比較的是兩個對象的引用,而非兩個對象的內(nèi)容。有意思的是,兩個匿名類型對象的類型比較返回了true。這說明當兩個匿名類型的聲明相同時(即相同的屬性名稱和個數(shù)),編譯器只會為這兩個匿名類型生成同一個匿名類型的定義。

  匿名類型的限制:

  1. 匿名類型不支持事件、自定義方法、自定義運算符、自定義重寫。

  2. 匿名類型是隱式封閉的。

  3. 匿名類型的實例創(chuàng)建只使用默認構(gòu)造函數(shù)。

  4. 匿名類型中還可以包含匿名類型。

  何時使用匿名類型:大多在Linq查詢時使用。

轉(zhuǎn)載于:https://www.cnblogs.com/free722/archive/2011/04/05/2006015.html

總結(jié)

以上是生活随笔為你收集整理的C#3.0语法新特性集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性生交xxxxx久久久缅北 | 两性视频久久 | 国产香蕉在线 | 免费人成网| 国产精品入口麻豆九色 | 最新中文字幕一区 | 亚洲第十页| 末路1997全集免费观看完整版 | 国产一区h| 精品国产视频一区二区三区 | 欧美成人精品三级网站 | 久久精品国产亚洲av麻豆蜜芽 | 久久人 | 成人做爰69片免费看 | 亚洲人妻一区二区三区 | 日韩欧美福利 | 国语对白在线观看 | 成人福利网址 | 成人免费视频国产在线观看 | 美攻壮受大胸奶汁(高h) | 国产真实偷伦视频 | 人人干人人看 | 最近中文字幕在线中文高清版 | 萌白酱在线观看 | 亚洲成av人在线观看 | 中文字幕a√| 亚洲一区二区福利视频 | 午夜国产在线视频 | 韩国三级做爰视频 | 一本免费视频 | 国语av | 久久精品色妇熟妇丰满人妻 | 性高跟鞋xxxxhd国产电影 | 无码人妻丰满熟妇区五十路 | 欧美日韩精品在线 | 看免费黄色片 | 青青操原 | 人人射人人射 | 精品欧美乱码久久久久久 | 免费在线毛片 | 能看的av| 视频在线观看免费大片 | www.青青草.com | 免费成人黄色片 | 国产色无码精品视频 | 久久天堂av综合合色蜜桃网 | 亚洲精品美女 | 热久久在线| 欧美黄色a视频 | 综合色小说 | 男人免费网站 | 黑人性视频| 一区二区 中文字幕 | 亚洲综合日韩精品欧美综合区 | 深夜福利一区二区三区 | 亚洲va在线∨a天堂va欧美va | 一二区免费视频 | 国产精品破处 | 朴银狐电影中文在线看 | 日毛片 | 日日夜夜精品免费 | 好吊妞操 | 国产男女视频 | 亚洲精品久久久久久国产精华液 | www.亚洲 | 久久久亚洲国产精品 | 97色网 | 免费高清毛片 | 男人天堂va| 精品人妻一区二区三区视频 | 天天干夜夜爽 | 精品99久久久久成人网站免费 | 日韩麻豆视频 | 伊人精品久久 | 日韩中文字幕网 | 靠逼网站 | 老司机在线永久免费观看 | 一级视频片 | 日本一区二区免费在线 | 日韩欧美一区二区三区四区五区 | 午夜啪啪福利视频 | 亚洲丁香网| 91免费网站入口 | 黄色网址在线看 | 3d动漫精品啪啪一区二区三区免费 | 国产成人免费观看 | 超碰在线免费97 | 樱桃成人精品视频在线播放 | 黄网在线观看视频 | 深夜福利一区二区三区 | 91精品国产麻豆 | 欧美亚洲精品天堂 | 夜夜av| 长河落日电视连续剧免费观看01 | 国产午夜视频在线播放 | 国产精品熟妇人妻g奶一区 a少妇 | 丰满人妻一区二区三区性色 | aa黄色大片 | 国产精品久久久久久久久免费 |