国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C#3.0新特性

2019-11-14 16:28:04
字體:
供稿:網(wǎng)友

1、自動屬性

下面兩種寫法作用相同

public int Age { get; set;}

  

PRivate int age;public int Age{  get { return age; }  set { age = value; }}

  //上面兩種寫法的區(qū)別等同于中國、中華人民共和國的區(qū)別

2、可空類型

對于值類型而言,在定義的同時必須要賦與具體的值,否則可能無法通過編譯.但是在某些情況下,用戶事先不知道它的值是多少,比如無法事先知道學生的年齡.因為將年齡定義為可以為空的類型就顯得很重要.  

  1. 值類型包括:int/double/float/decimal/bool/char/sturct
  2. 可為空的語法為:Nullable<T>,其中T指代上面具體的某種類型比如,可以為空的int類型:Nullable<int>;可以為空的bool類型:Nullable<bool>
  3. 可以為空的變量,在賦值時,可以將null賦值給它 例如:
    Nullable<int> age = null;
  4. Nullable<T>可以簡寫為:T?  例如:int? age = null;等價于Nullable<int> age = null;
  5. 下面兩種寫法都是錯誤的.因為string和Student都是引用類型
    1.   string? name = null; 
    2. Student? Stu = null;
  6. 可空類型的常用屬性:
    1. HasValue:布爾類型,如果字段不為null返回true,否則返回false.
    2. Value:獲取字段的值,如果該字段的值為null,那么調(diào)用Value屬性會報錯

 

3、泛型類

  1. List<T>:T可以指代任何類型,比如:int/bool/string/Student/...
  2. Dictionary<T, K>:字典類,其中T和K可以指代任何類型
  3. KeyValuePair<Tkey, Tvalue>:鍵值對類型

4、對象初始化器

示例:

Student stu = new Student(){Name = "張三" , Age = 18 };

  

5、集合初始化器

示例:

List<Student> stuList=new List<Student>(){  stu,
  new Student(){Name="李四" , Age = 20 }
};

  

6、var關鍵字

  1. var用于定義變量,變量的類型根據(jù)值來確定.
  2. var  a  = 5; 因為5是int類型,所以a的類型也是int
  3. var  stu  =  new  Student();因為通過new創(chuàng)建的是Student類型的變量,所以stu是Student類型.

注意1:var b;這種寫法是錯誤的.原因是由var聲明的變量,必須在定義的同時就初始化.

注意2:通過var聲明的變量一旦實例化后,就不能再更改它的數(shù)據(jù)類型.例如下面的代碼:

var  a  =  5;  a  =  “zhangsan”;//a=”zhangsan”報錯

7、匿名類型

在實例化一個類對象時,可以無須事先定義該類,通過new{}即可動態(tài)創(chuàng)建類對象.

示例:

var preson=new { Name="王五" , Sex = "男"};

 

8、擴展方法

給以前定義好的類擴展其他的方法.

  1. 首先定義一個靜態(tài)類(類的名稱沒有限制)
  2. 在靜態(tài)類中定義一個靜態(tài)方法(方法返回值根據(jù)實際情況自定定義)
  3. 給上述靜態(tài)方法添加一個參數(shù),該參數(shù)必須被this關鍵字修飾.
  4. 上面參數(shù)的類型就是該擴展方法所擴展的類型

示例:Student的擴展方法

public static class StudentExtention    {        public static string ConsoleStudent(this Student stu)        {            if (!stu.Age.HasValue)            {                stu.Age = 18;            }           string str="姓名:" + stu.Name + "/n" + "性別:"+stu.Sex+"/n"+"年齡:"+stu.Age;            return str;        }    }

  

9、匿名類型和Lambda表達式

  1. 什么是委托:委托允許將一個方法作為參數(shù),傳遞給另外一個方法.
  2. 委托和掛載的方法:參數(shù)個數(shù)/參數(shù)類型/參數(shù)順序/返回值類型必須要一致.

示例:

 

 

但是上述方式,使用很復雜.我們可以通過匿名方法來簡寫上述功能.Lambda表達式也是匿名方法的一種快速寫法.

Lambda表達式分3部分  :   參數(shù)   |   =>   |    表達式

下面的代碼演示了如果使用Lambda表達式改寫委托的示例

 

注意1:如果Lambda表達式只有1個參數(shù),那么參數(shù)可以不用()包裹

注意2:Lambda表達式部分可以使用{}包裹,也可以不包裹.如果有多行代碼,必須要使用{}包裹起來.

由此:在出現(xiàn)委托(Func參數(shù))的地方,我們就可以寫Lambda表達式.

 

Func<T, K>是一個泛型委托.該委托的參數(shù)類型為T,返回值類型為K.

Lambda表達式的參數(shù)arg的類型為T,Lambda的表達式部分返回值類型為K.

10、分部類

關鍵字:partial

partial是一個類修飾符,用于把類定義拆分為幾個部分,便于代碼管理

 

ending......

 

 

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 滦平县| 获嘉县| 信阳市| 富顺县| 财经| 马关县| 专栏| 墨脱县| 宣武区| 叶城县| 大名县| 简阳市| 白水县| 漾濞| 江阴市| 黄龙县| 台中市| 娄底市| 朝阳区| 丹棱县| 苗栗县| 堆龙德庆县| 吴忠市| 荆州市| 镇平县| 阳新县| 老河口市| 巴楚县| 江津市| 东平县| 抚远县| 沧源| 仙居县| 安西县| 阜南县| 古蔺县| 甘孜县| 濮阳县| 湖南省| 涡阳县| 黑河市|