C#3.0新體驗
前言概述:
微軟的腳步一直都很快,經常發現很多技術還沒學就已經過時了(可能是本人學習能力低下);作為研發個人認為應該站在技術的前沿,一定要跟上新技術的腳步(沒辦法,不學這些東西,過一段時間飯碗要保不住的);
從2002開始做開發,一直以來都在用vs.net(c#),可以算的上使用.net的一個老程式設計師了,可是回頭看看,居然對.net很多都不瞭解,或者是一知半解;(汗如泉湧)作為一個用了5,6年.net開發的程式設計師,居然只知道頁面放控制元件要整齊好看,UI資料傳遞給業務層處理,然後呼叫資料層訪問(工作主要處理內容),很長一段時間不知道asp.net為何物(以前一直做winform),開發使用的最原始的.net自帶IDE工具,沒有開發任何輔助工具,對架構設計沒什麼概念,專案管理不知如何下手,測試全靠手工點介面,效能優化沒有效果,資料事務沒有保障,安裝部署從來不知道怎麼弄,程式碼重構沒有幹過,設計模式只知道工廠... ...
實在有太多東西不懂,(省略號包含的內容太多)這兩年剛開始接觸asp.net開發,一個人摸著石頭過河,走了不少彎路,到現在還在摸索,感覺好多基礎的東西都是新的;對自己能力極度懷疑的情況下,同時對微軟(當然包括其他WEB技術供應商)這些牛人們產生極度的憤慨,沒事搞出那麼多技術,讓我還怎麼活(能力較差,性格懶散型別),學好一個技術(點)還有N+1個在後面排著;
這兩年忙著裝修,娶媳婦(全是偷懶的藉口),原來的一點技術上積累的老底已經過時,很多都用不上了,直接導致一個嚴重的後果:近兩年沒漲過工資,還要當心失業的問題(一家老小啊,還有萬惡的銀行貸款壓迫),在諸多壓力下,決定徹底改造,重新做人,爭取早日刑滿釋放,TNND,應該說金盆洗手(攢個百八十萬的,當然要算美金才行,這社會RMB不經花),於是乎,決定從基礎學起,開始這個C#3.0歷程,希望整理的這些資料能給各位有一點點幫助!
一.C# 3.0語言主要增強點
• 隱含型別區域性變數
• 擴充套件方法
• 物件與集合初始化器
• 匿名型別
• Lambda表示式
• 查詢表示式( LINQ )
• 表示式樹
二.隱含型別區域性變數
先來看看例句:
var i = 5;
var h=23.56;
var s = “C Sharp";
var intArr = new[] {1,2,3,4} ;
var a = new[] { 1, 10, 100, 1000 };
"var"這個關鍵字是不是很眼熟,javascript中經常用到(互相學習現在比較常見了),當然C#中var和javascript的var差別還是比較大。
1.var只能作為區域性變數使用;
就是說var只能定義在一個方法裡面,或者foreach,for,using等語句裡面:
public class VarTest
{
private void test()
{
var i = 0;
}
}
2.var可以申明任何型別變數,可以根據後面的初始化語句自動推斷型別;
這個和object有點像,但var是強型別,根據初始化表示式來定義變數的型別;
var i=0; i 是int型別
var str = "test"; str是string型別
3.var定義時,必須使用表示式初始化;
也就是必須定義成 var i=0; 沒有初始化編譯會報錯,而且初始化值不能為null,編譯器無法根據null來推斷出區域性變數的型別;初始值除了int,string等資料型別外,還可以使用new 一個物件作為初始值(從網上大家發表的看法,var使用最多的就是配合一個匿名型別的物件來使用,以及在Linq中使用)
//下面是網上某個網友寫得部落格,拷貝修改了一下!
配合匿名型別使用:
var a = new{ Name = "maotin" ,Age = 99};
Console.WriteLine(a.Name);
Console.WriteLine(a.Age);
在linq中應用:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var queryLowNums =
from num in numbers
where num < 5
select num;
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}
4.var使用建議
一般var不要像“var i=9;”這樣使用,程式可讀性不高;
在匿名型別中使用比較方便;foreach中使用也不錯;
var只是語言層面的東西,編譯器會在編譯的時候通過型別推斷把它換成真正的型別
微軟的腳步一直都很快,經常發現很多技術還沒學就已經過時了(可能是本人學習能力低下);作為研發個人認為應該站在技術的前沿,一定要跟上新技術的腳步(沒辦法,不學這些東西,過一段時間飯碗要保不住的);
從2002開始做開發,一直以來都在用vs.net(c#),可以算的上使用.net的一個老程式設計師了,可是回頭看看,居然對.net很多都不瞭解,或者是一知半解;(汗如泉湧)作為一個用了5,6年.net開發的程式設計師,居然只知道頁面放控制元件要整齊好看,UI資料傳遞給業務層處理,然後呼叫資料層訪問(工作主要處理內容),很長一段時間不知道asp.net為何物(以前一直做winform),開發使用的最原始的.net自帶IDE工具,沒有開發任何輔助工具,對架構設計沒什麼概念,專案管理不知如何下手,測試全靠手工點介面,效能優化沒有效果,資料事務沒有保障,安裝部署從來不知道怎麼弄,程式碼重構沒有幹過,設計模式只知道工廠... ...
實在有太多東西不懂,(省略號包含的內容太多)這兩年剛開始接觸asp.net開發,一個人摸著石頭過河,走了不少彎路,到現在還在摸索,感覺好多基礎的東西都是新的;對自己能力極度懷疑的情況下,同時對微軟(當然包括其他WEB技術供應商)這些牛人們產生極度的憤慨,沒事搞出那麼多技術,讓我還怎麼活(能力較差,性格懶散型別),學好一個技術(點)還有N+1個在後面排著;
這兩年忙著裝修,娶媳婦(全是偷懶的藉口),原來的一點技術上積累的老底已經過時,很多都用不上了,直接導致一個嚴重的後果:近兩年沒漲過工資,還要當心失業的問題(一家老小啊,還有萬惡的銀行貸款壓迫),在諸多壓力下,決定徹底改造,重新做人,爭取早日刑滿釋放,TNND,應該說金盆洗手(攢個百八十萬的,當然要算美金才行,這社會RMB不經花),於是乎,決定從基礎學起,開始這個C#3.0歷程,希望整理的這些資料能給各位有一點點幫助!
一.C# 3.0語言主要增強點
• 隱含型別區域性變數
• 擴充套件方法
• 物件與集合初始化器
• 匿名型別
• Lambda表示式
• 查詢表示式( LINQ )
• 表示式樹
二.隱含型別區域性變數
先來看看例句:
var i = 5;
var h=23.56;
var s = “C Sharp";
var intArr = new[] {1,2,3,4} ;
var a = new[] { 1, 10, 100, 1000 };
"var"這個關鍵字是不是很眼熟,javascript中經常用到(互相學習現在比較常見了),當然C#中var和javascript的var差別還是比較大。
1.var只能作為區域性變數使用;
就是說var只能定義在一個方法裡面,或者foreach,for,using等語句裡面:
public class VarTest
{
private void test()
{
var i = 0;
}
}
2.var可以申明任何型別變數,可以根據後面的初始化語句自動推斷型別;
這個和object有點像,但var是強型別,根據初始化表示式來定義變數的型別;
var i=0; i 是int型別
var str = "test"; str是string型別
3.var定義時,必須使用表示式初始化;
也就是必須定義成 var i=0; 沒有初始化編譯會報錯,而且初始化值不能為null,編譯器無法根據null來推斷出區域性變數的型別;初始值除了int,string等資料型別外,還可以使用new 一個物件作為初始值(從網上大家發表的看法,var使用最多的就是配合一個匿名型別的物件來使用,以及在Linq中使用)
//下面是網上某個網友寫得部落格,拷貝修改了一下!
配合匿名型別使用:
var a = new{ Name = "maotin" ,Age = 99};
Console.WriteLine(a.Name);
Console.WriteLine(a.Age);
在linq中應用:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var queryLowNums =
from num in numbers
where num < 5
select num;
foreach (var s in queryLowNums)
{
Console.Write(s.ToString() + " ");
}
4.var使用建議
一般var不要像“var i=9;”這樣使用,程式可讀性不高;
在匿名型別中使用比較方便;foreach中使用也不錯;
var只是語言層面的東西,編譯器會在編譯的時候通過型別推斷把它換成真正的型別
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-464470/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#3.0/LINQ的新下載C#
- [C#3.0體驗]Orcas中內建的LinQ,XLinQ[DLinQ]擴充套件方法C#套件
- 微服務新體驗之Aspire初體驗微服務
- Nocalhost:雲原生開發新體驗
- 【譯】新的 MSBuild 編輯體驗UI
- C#3.0新特性――隱含型別區域性變數和匿名型別C#型別變數
- 遊戲設計如何創新?——給玩家新的體驗遊戲設計
- DM8新特性及初次體驗
- 活動外掛功能新玩法,系統升級新體驗
- 軟體驅動創新 戴爾科技打造現代化儲存新體驗
- 提升AI智慧化水平,打造智慧新體驗AI
- Windows 10有新圖示了!全新體驗Windows
- Sy.ExpressionBuilder 動態查詢新體驗ExpressUI
- OA管理軟體新體驗:與舊時代說再見
- 新引擎、新能力、新體驗,騰訊主機安全旗艦版重磅釋出
- 多款遊戲新穎的設計體驗與分享遊戲
- 智慧家居新寵:MATO雲門鈴體驗評測
- Google解釋新介面和使用者體驗Go
- 春季草木綠,華為授權體驗店變新裝
- 最受歡迎PHP框架Laravel 5.5 新特性 提前體驗PHP框架Laravel
- 智慧新時代-不一樣的人機互動體驗
- 時光軸全新導購網站購物新體驗網站
- 新體驗,Apple Watch 也能搶微信紅包了!APP
- 新聞新體驗!3DCAT助力開啟紅網“元宇宙”新聞直播間3D元宇宙
- 【轉】C#3.0編碼習慣與命名規則C#
- 遠光天鹿:重塑數字化時代軟體設計新體驗
- 7月新特性 | 軟體開發生產線CodeArts釋出多項新特性等你體驗!
- 全息水幕投影,打造投影視覺新體驗!佩京科技視覺
- 榮耀遊戲本智慧新體驗!這些功能太“奧利給”遊戲
- Molecule實現數棧至簡前端開發新體驗前端
- 一個新角度:用<核心體驗>來定義“魂味”
- OceanBase學習之路11|體驗 DDL 新特性(Oracle 模式)Oracle模式
- OceanBase學習之路12|體驗 DDL 新特性(MySQL 模式)MySql模式
- 智慧家居新體驗 進門只需喊聲“芝麻開門”
- Lotus Notes 8.5 icalenar 互動新體驗及應用
- 新零售時期,如何依靠新技術來提高使用者體驗?
- CardsMobile攜手華為安全檢測,打造俄羅斯一體化支付新體驗
- C#3.0之神奇的Lambda表示式和Lambda語句C#