C 3 0新體驗 三 物件與集合初始化器收

2022-05-01 02:48:07 字數 2411 閱讀 4670

***

c#3.0新體驗(三)

maotin

20080925

前言:每天起得很早,花將近1.5個小時的路程來到公司,晚上下班到家基本上19:30以後;每天除了睡覺的7個多小時,有將近1/5時間在路上,呵呵,不知道有多少人和我一樣,我想所謂大城市的快節奏是不是因為住得離公司太遠,每天為了不遲到趕到公司,下班為了趕緊回家和家人一起吃飯而催生出來的;在這種環境生活不容易啊,每天地鐵、公交的擁擠能把一天的好心情都擠沒了,到了公司除了一身汗臭還有就是滿肚的報怨(前天被個中年阿姨搶了位置,nnd昨天又被高跟鞋踩了一腳);於是天天看著公交車外開過的一輛輛的小車那是相當羨慕啊,看著裡面的帥哥美女,人家這日子過得多滋潤;為了早日能有一部自己的小車,又得咬牙切齒的投入今天的工作!

每天為了挑起學習、工作的動力,都要做一番戰前動員思想工作!(思想覺悟還有待提高)

四.物件與集合初始化器:

1.先介紹一下自動屬性:

public class customer

set}

}//c#3.0中大大簡化這種屬性的寫法(確實節省了不少**量,贊!)

public class customer

}c# 3.0的自動屬性就不需要建立私有變數,而把這個工作交給編譯器代勞!當然,如果需要在獲取訪問器get或設定訪問器set裡頭新增一些邏輯,擴充套件也很方便。

2.物件初始化器

//我們還是以以前習慣的寫法舉例

public class customer

public customer(string pid)

public customer(string pid,string pname,string page)

public string id

public string name        

public string age

}//customer物件初始化

customer customer = new customer();

customer.id = "001";

customer.name = "test001";

customer.age = "28";

//或者使用建構函式

customer customer = new customer("001","test001","28");

上面這種寫法在我們以前的**裡隨處可見,而有了物件初始化器之後這種寫發會被更簡潔的**所替代,不需要寫這麼多條的賦值語句,不需要定義這麼多的建構函式來初始化;

//物件初始化器

public class customer

public string id

public string name        

public string age

}//customer物件初始化(想要初始化幾個屬性都可以)

customer customer = new customer;

當然從本質上講,只是簡化了**編寫工作,後台編譯器自動完成轉換。物件初始化器實際上利用了編譯器對物件中對外可見的字段和屬性進行按序賦值,在編譯時還是隱式呼叫了建構函式,對字段或屬性的進行逐一賦值。

除了在初始化類時設定簡單的屬性值外,物件初始化器特性也允許我們設定更複雜的巢狀(nested)屬性型別

//customer物件初始化(想要初始化幾個屬性都可以)

customer customer = new customer};

3.集合初始化器

集合初始化器會對初始化器中的元素進行按序呼叫icollection.add(t) 。應用集合初始化器的物件的型別必須實現了system.collections.generic.icollections介面

並指定了確定的t。

例如:list<

int> num= 

newlist<

int> 

;listcustomers = new list,

new customer,

new customer };

這和以前呼叫list.add沒有本質的區別,編譯器自動的呼叫了list的無參構造方法,然後例項化乙個個的customer

,再乙個個的add進去,和我們原來的做法沒有什麼不同,但是,這是編譯器在後台自動處理,簡省了我們很多的編碼工作。

網友部落格中拷貝的一段話:(原文

附加:

剛開始想想這物件集合初始化器也許就一雞肋,沒啥用,不就減少一點點**麼,像這種簡單的初始化工作,大部分**生成器都可以來幹。後來在研究匿名型別的時候突然發現,如果沒有這個物件初始化器,匿名型別是不是要複雜一些?或者就是難以實現?

var test = new;如果沒有物件初始化器,匿名型別該怎麼辦?

匿名型別還沒正式研究,但是我覺的任何乙個改變都不會是孤立存在,c#3.0的許多新特性也是互相關聯,而且可以肯定很多新特性是為了linq這個做準備的!(隨著研究深入會不斷補充新體會)

C 3 0 物件初始化設定

原文連線 有類如下 public class document public string content c 2.0 為 document 物件的屬性賦值,可能通過如下的方式 document doc new document doc.title 標題 doc.content 內容 用了三行 能不...

C 3 0之物件與集合初始化

我們知道在c 2.0中要初始化乙個物件可以用構造器,或者宣告公有屬性,然後在new乙個物件之後在對屬性賦值。必須一步一步的來,在c 3.0中可以有一種很簡單的方法對物件和集合進行初始化工作。看個例子 list int num newlist int 相當於 icollection.add t 即nu...

C 3 0新特徵之建立和初始化集合物件

一 引言 c 3.0中新的物件初始化器是一種簡單的語法特徵 借助於這種特徵,物件的構建和初始化變得非常簡單。假定你有乙個類student,它看起來有如下樣子 public class student 那麼,你可以使用物件初始化器來建立這個類的乙個物件,如下所示 var student1 new st...