MVC系列隨筆二

2022-03-16 02:48:30 字數 2516 閱讀 6580

-》linq

1.隱式型別 var a=1;var b="哈哈";在不知道型別的情況下使用,il會根據賦值類判斷型別,不會影響效率。因為il產生的中間一樣。var 必須賦值。

2.匿名型別 var entity= new ;

把乙個物件的屬性copy到匿名物件中,不用顯示指定屬性的名字,原始的屬性名字會被copy到匿名物件中。

監視entity會發現它的型別就是anonymous type(匿名型別)

不要試圖在建立匿名物件的方法外面訪問它的屬性

在特定的**,序列化和反序列化json時有用

3.自動屬性

4.物件初始化器 var obj=new obj; var arr=list();

5.委託

6.泛型

裝箱:值型別轉換為object型別; 拆箱:object轉換為值型別   裝箱操作會導致效能損耗 泛型能解決這個問題

hashtable queue stack等非泛型容器會裝箱,這些容器只能儲存object型別的資料

list、dictionary都是泛型

自定義泛型

public static class somethingfactory

return default(t);}}

泛型約束:public static class somethingfactorywhere t:myobj 只能傳入myobj型別或myobj派生類

或這樣寫:where t:myobj,new()約束傳入的型別必須有乙個建構函式

泛型的好處

<1>演算法的重用

想想看:list型別的排序演算法,對所有型別的list集合都是有用的

<2>型別安全

<3>提公升效能

沒有型別轉化了,一方面保證型別安全,另一方面保證效能提公升

<4>可讀性更好

7.泛型委託

委託基本歸為3類:

<1>predicate泛型委託

var d1=new predicate(more);

定義:表示定義一組條件並確定指定物件是否符合這些條件的方法

obj 要按照由此委託表示的方法中定義的條件進行比較的物件

t 要比較的物件的型別

返回結果 如果obj 符合由此委託表示的方法中定義的條件,則為true;否則為false

pubic delegate bool predicate(t obj);

缺點定義太死,必須有乙個返回值,必須有乙個引數

<2>action泛型委託

可以有0個到16個輸入引數,輸入引數的型別是不確定,但不能有返回值

var d3 = new action(noparamnoreturnaction);

var d4 = new action(twoparamnoreturnaction);

注意:尖括號中int和string為方法的輸入引數

static void noparamnoreturnaction()

static void twoparamnoreturnaction(int a, string b)

<3>func泛型委託

彌補action泛型委託,不能返回值的不足,規定要有乙個返回值,返回值的型別也由使用者確定

var d5=new func(oneparamonereturnfunc);

注意:string 型別(最後乙個泛型型別)是方法的返回值型別

static string oneparamonereturnfunc(int a)

8.匿名方法

var arr = new list() ;

//var d1 = new moreorlessdelgate(more);

//var d1 = new predicate(more);

var d1 = new predicate(delegate(int item)

return false;

});print(arr, d1);

console.writeline("ok");

<1>**可讀性更好

<2>可以訪問當前上下文中的變數

9.擴充套件方法

擴充套件方法是靜態類中的靜態方法

public static class myclass

}var a="aaa";

a.extstring();

----aaa----

<1>擴充套件方法必須在乙個非巢狀、非泛型的靜態類中定義

<2>擴充套件方法必須是乙個靜態方法

<3>擴充套件方法至少要有乙個引數

<4>第乙個引數必須附加this關鍵字作為字首

<5>第乙個引數不能有其他修飾符(比如ref或者out)

<6>第乙個引數不能是指標型別

注意事項

<1>跟前面提到的幾個特性一樣,擴充套件方法只會增加編譯器的工作,不會影響效能(用繼承的方式為乙個型別增加特性反而會影響效能)

<2>如果原來的類中有乙個方法,跟你的擴充套件方法一樣(至少用起來是一樣),那麼你的擴充套件方法獎不會被呼叫,編譯器也不會提示你

<3>擴充套件方法太強大了,會影響架構、模式、可讀性等等等等....

MVC簡單隨筆

mvc的具體含義是 model view controller,即模型 檢視 控制它們各自處理自己的任務 1 模型 model 模型持有所有的資料 狀態和程式邏輯。模型獨立於檢視和控制器。2 檢視 view 用來呈現模型。檢視通常直接從模型中取得它需要顯示的狀態與資料。對於相同的資訊可以有多個不同的...

愛上MVC系列 目錄

回到佔佔推薦部落格索引 愛上mvc razor引擎時,在遍歷中巧用output.write方法 愛上mvc 開發areas模組時需要注意一下路由問題 愛上mvc 實體級標準驗證 愛上mvc系列 partialview 與view 真的一樣嗎?愛上mvc系列 手動向路由表扔資料,不影響當前url路由配...

愛上MVC系列 目錄

回到佔佔推薦部落格索引 愛上mvc razor引擎時,在遍歷中巧用output.write方法 愛上mvc 開發areas模組時需要注意一下路由問題 愛上mvc 實體級標準驗證 愛上mvc系列 partialview 與view 真的一樣嗎?愛上mvc系列 手動向路由表扔資料,不影響當前url路由配...