C#、.Net以及IDE簡介
一、什么是.Net?
.Net指 .Net Framework框架,一種平臺,一種技術(shù)。
.Net Framework框架是.Net平臺不可缺少的一部分,它提供了一個穩(wěn)定的運行環(huán)境來保證我們基于.Net平臺開發(fā)的各種應用能夠正常運轉(zhuǎn)。
.Net Framework 各版本區(qū)別
2002年 1.0------vs2002
統(tǒng)一類型系統(tǒng),基礎(chǔ)類庫,垃圾回收,多語言支持、ado.net 1.0、asp.net 1.0、winform 1.0。
2003年 1.1------vs2003
安全方面升級、自帶對ODBC Oracle的支持,支持ipv6
2005年 2.0------vs2005
提升安全性、性能、泛型和內(nèi)置泛型集合、基礎(chǔ)類庫的擴展、引入事務Transaction
2006年 3.0------需要2.0框架支持
WCF(WEB服務)、WF(工作流)、WPF(用戶界面統(tǒng)一)、WCS(數(shù)字標識用戶控件)
2007年 3.5------vs2008
asp.net Ajax、Linq、自動屬性、對象初始化器、集合初始化器、擴展方法、Lambda表達式、查詢語法、匿名類型、LinqtoSQL、MVC
2010年 4.0------vs2010
DLR、dynamic、默認參數(shù)、命名參數(shù)、并行開發(fā)等
.NET Framework 由.NET Framework類庫和公共語言運行時兩個主要組件組成
CLS(公共語言規(guī)范):用來保證語言之間的兼容性,只要遵循CLS任何一種.net語言編寫的組件都可以被其他語言所引用。
CTS(通用類型系統(tǒng)):定義了如數(shù)字、字符串和數(shù)組等數(shù)據(jù)類型的規(guī)則,這樣他們就能為所有的.net語言所共享。
CLR(公共語言運行庫): 只是用來執(zhí)行中間語言代碼。然后把他們編譯成為機器語言讓他們能在當前平臺執(zhí)行。
DLR(動態(tài)語言運行時):4.0的新特性,CLR為c#和vb提供了通用的平臺,而DLR則為javascript、Ruby等com組件提供了通用平臺。
二、什么是C#?
C#是一種編程語言,可以開發(fā)基于.Net平臺的應用。
.net 是一種多語言開發(fā)的平臺 vb c++ F# 等,主要使用C#編程語言進行開發(fā)。
三、.Net能干什么?
1、桌面應用程序(Winform),就是軟件。
2、Internet應用程序(ASP.NET),就是網(wǎng)站。
3、手機開發(fā) wp8
4、Unity3D 游戲開發(fā)
四、.Net交互模式
C/S:Clinet/Server,客戶端對服務器,需要安裝在電腦上的軟件。
B/S:Browser/Server,瀏覽器對服務器,不需要安裝在電腦上,通過網(wǎng)頁打開。
五、什么是IDE?
IDE 是指我們使用的開發(fā)工具,visual studio就是最常用的一種。
visual studio使用
啟動方式:雙擊圖標、命令:devenv
創(chuàng)建控制臺項目:新建項目 c# 控制臺 右上角.net framework 版本 項目名稱
解決方案關(guān)系:解決方案中包含多個項目,項目中包含多個文件,文件中命名空間包含類,類中可以包含方法,方法中包含程序代碼。
.sln后綴的文件是解決方案文件,包含整個解決方案的信息。類文件以.cs結(jié)尾。
.csPRoj 項目文件里面包含項目的信息。
解決方案 右鍵 新增項目 新建項目追加到解決方案 多個項目時 可以設置某個項目為啟動項目 啟動時自動啟動該項目 項目可以卸載 和追加 當執(zhí)行編譯時 不再檢查已卸載的項目 工具->導入導出設置 中有個重置開發(fā)環(huán)境, 設置下可以設置字體 行號。
常用快捷鍵:ctrl+k+d全部對齊 | ctrl+k+f部分對齊 | ctrl+s保存 | ctrl+shift+s全部保存 | ctrl+c復制 | ctrl+v粘貼 | ctrl+z撤銷 | ctrl+y前進 | ctrl+j智能提示 ctrl+w+e代碼自動折行 等等。
六、Main方法
Main方法是程序的入口方法。 執(zhí)行一個程序時,首先找到main方法,從main方法中第一句程序開始執(zhí)行,當main方法執(zhí)行完畢后程序就結(jié)束了。 一個程序只能有一個main方法
輸入輸出
Console.WirteLine(); //向控制臺輸出一句話。Console.ReadLine(); //向控制臺輸入一句話。
每一句代碼以;結(jié)束
啟動方式:f5帶調(diào)試啟動,shift+f5不啟動
生成解決方案編譯項目F6
八、xmind 繪圖軟件
新建空的 tab鍵 新增子節(jié)點 回車鍵 新增兄弟節(jié)點
F7快捷截圖 F8預覽
基礎(chǔ)語法
一、注釋
// 單行注釋 ctrl+k+c ctrl+k+u取消
/* */ 多行注釋
/// 文檔注釋
#region #endregion 折疊代碼 ctrl+k+s #reg
二、配置c#編譯環(huán)境
c#源程序需要.net framework SDK安裝程序提供的C#編譯器 csc.exe來編譯,需要設置環(huán)境變量。
我的電腦-屬性-系統(tǒng)屬性-高級-環(huán)境變量-系統(tǒng)環(huán)境變量-系統(tǒng)變量-選擇path-點編輯-將sdk安裝程序路徑添加到變量值。
C:/Windows/Microsoft.NET/Framework/v4.0.30319 //我的路徑 path中;區(qū)分
cmd 進入源文件目錄 輸入csc xxx.cs 該目錄下會編譯為xxx.exe可執(zhí)行文件 cd C:/Users/大偉/Desktop/abc/abc---> csc Program.cs
三、變量
用來在計算機中存儲數(shù)據(jù),存儲于內(nèi)存中。內(nèi)存是臨時存儲數(shù)據(jù) 斷電時內(nèi)存中數(shù)據(jù)丟失
編寫的代碼存在內(nèi)存中, 保存后從內(nèi)存中保存到硬盤中 變量代表著一塊內(nèi)存空間,可以通過變量名稱向內(nèi)存中存/取數(shù)據(jù)。
1、聲明變量
數(shù)據(jù)類型 變量名;
例:int a; string b; double c;
2、變量賦值
變量名=值; 其中"="為賦值運算符,把右側(cè)值賦給左側(cè)變量。
例:a = 1;b = "asd";c = 2.13; 優(yōu)先級最低a=a+1;算完在賦值;
3、聲明并賦值
數(shù)據(jù)類型 變量名 = 值;
例:int a = 1;
變量可以重復賦值,以最后一次為準,但不可以重復聲明 變量必須先聲明后使用
四、數(shù)據(jù)類型
整型:int、浮點數(shù):double、字符:char、字符串:string、貨幣:decimal。
double 精度15~16位,16后不再顯示, decimal精度29 后面加m/M否則按double類型報錯。
4.0新特性
System.Numerics.BigInteger 大整數(shù)類型 需要framework 4.0或以上 如果沒有 檢查bll是否引用程序集
BigInteger big = new BigInteger(1000000000);
long value = 31313892839283;
BigInteger big = value;
dynamic 動態(tài)數(shù)據(jù)類型
運行時才檢查數(shù)據(jù)類型
dynamic v = 124;
Console.WriteLine(v.GetType()); //System.Int32
五、變量命名規(guī)則
必須字母或_或@開頭、不可以數(shù)字開頭。后面可以跟數(shù)字、字母、下劃線。
不可以與系統(tǒng)關(guān)鍵詞重復、大小寫敏感、不可以重復定義。
如果縮寫單詞全部大寫ICBC,多個單詞第二個單詞大寫首個小寫fuckYou? 或每個都大寫FuckYou!
六、“+”號的使用
“+”數(shù)字相加(左右都是數(shù)字) 例:1+1
“+”字符串鏈接(有一個是字符串) 例:string result = "haha" + 123;
七、占位符
"我叫{0},身高{1}",one,two; 右側(cè)保證與左側(cè)占位符個數(shù)相同 否則報錯
console輸出中","后面都是用來替換占位符的
八、變量交換
int a = 5,b = 10,temp;
temp = a;
a = b;
b = temp; // 完成交換
九、轉(zhuǎn)義字符
由/加上一個字符組成可以輸出的特殊字符
/"輸出引號 /n換行 /b退格 backspace鍵 刪除前一個 /t tab鍵 行對齊 // 輸出/
字符串前面加@標識該字符串有/不再轉(zhuǎn)義,字符串可以換行,輸出“時用兩個“
十、算術(shù)運算符
+ - * / % 二元運算符 兩個數(shù)字運算
十一、算術(shù)表達式
由運算符鏈接兩個數(shù)組成表達式 a+b
十二、類型轉(zhuǎn)換
隱式類型轉(zhuǎn)換:也叫自動轉(zhuǎn)換,當目標類型大于源類型時發(fā)生轉(zhuǎn)換。(小的轉(zhuǎn)成大的)
顯示類型轉(zhuǎn)換:也叫強制轉(zhuǎn)換,把double強制轉(zhuǎn)換成int不要小數(shù)點【(數(shù)據(jù)類型)值】(大的轉(zhuǎn)成小的)
(int)string 右側(cè)string必須是整數(shù)才可以轉(zhuǎn)換。
Convert轉(zhuǎn)換
Convert.ToInt32(帶轉(zhuǎn)換字符串); //轉(zhuǎn)換為Int;
Convert.ToString(number); //轉(zhuǎn)換為字符串
類型都有一個.ToString() 也可以用這個方法轉(zhuǎn)換為字符串
十三、可空類型?
int? a = null; 表示a的值可以為null使用
十四、異常處理
try{}catch 可能有錯誤的try中 報錯進入catch
運算符
一、一元運算符
++ 自增 -- 自減
后++;age=18; sum = age++ -10; age++取前值先算age-10 運算后 再運算age++; age=19 sum=8;
前++; ++age - 10 ++age 取新值 先+完
二、復合賦值符
+= += *= /= %=
age+=3; 自加3 類似:age=age+3;
三、關(guān)系運算符
>大于 <小于 ==等于 !=不等于 >=大于等于 <=小于等于
兩個數(shù)的操作稱為二元運算符
四、布爾類型
bool 類型只有兩個值:真true、假false。
關(guān)系運算的結(jié)果是布爾類型的
五、邏輯運算符
&&與 : 左右表達式都成立則為true
|| 或 : 左右表達式有一個成立就為true
! 非 : 不成立則為true
六、三元運算符
a1= =a2 ? "a" : "b" 成立輸出a 否則輸出b
分支結(jié)構(gòu)
一、If
if(判斷條件)
{
要執(zhí)行的代碼;
}
判斷條件一般為關(guān)系表達式或bool類型的值,如果判斷條件成立則執(zhí)行大括號內(nèi)代碼。
二、If-else
if(判斷條件)
{
成立的代碼
}else {
不成立的代碼
}
如果判斷條件成立,執(zhí)行大括號內(nèi)代碼,否則執(zhí)行else內(nèi)代碼。
三、If-else If
用來處理多條件的區(qū)間性判斷
if(a=1){}else if(a=2){}else if(a=3){}else{}
你懂的一直判斷有沒有 實在沒有就else。
四、Switch-case
用來處理多條件的等值比較
switch (num)
{
case 1: 如果1
1
break;
case 2: 如果2
2
break;
default: 否則
other
break
}
循環(huán)結(jié)構(gòu)
一、While循環(huán)
先判斷再執(zhí)行
int i = 0;
While(i<100) //條件
{
i++;
if(i==50)
break; //跳出循環(huán)
}
二、do-while循環(huán)
先執(zhí)行再循環(huán)
do
{
i++;
}while(i<50);
三、for循環(huán)
規(guī)定次數(shù)的循環(huán)
for(int i = 1;i<10;i++){
console.writeline(i);
}
四、foreach循環(huán)
循環(huán)集合
foreach(var item in list){
console.writeline(item.xx);
}
循環(huán)的集合 見第二章 都是循環(huán)就放這了 大量數(shù)據(jù)情況下 沒有for效率高
五、跳轉(zhuǎn)語句
break 立即跳出循環(huán)
continue 結(jié)束本次 繼續(xù)下次循環(huán)
goto跳轉(zhuǎn)到指定位置
return 返回
throw 拋出異常
常量、枚舉、結(jié)構(gòu)以及數(shù)組
一、常量
不可改變的值
const 類型 名=值
const pi=3.14;
二、枚舉
限制賦值 在定義枚舉時的集合中選值
public enum Gender //定義枚舉
{
男,
女
}
Gender gender = Gender.男; //枚舉賦值
定義枚舉時,值不能是int類型的,那樣做沒有意義。
枚舉轉(zhuǎn)換為int
枚舉的類型可以跟int類型互相轉(zhuǎn)換,枚舉類型與int類型相兼容。
枚舉的值在定義時是有一個默認編號的,從0開始。
(int)Gender.男; //值為0 女為1 每次遞增1
改變枚舉的默認值定義時賦值,則默認從此值開始。
public enum Gender //定義枚舉
{
男=2,
女
}
這時(int)Gender.男 值為2,女則為3.
枚舉類型轉(zhuǎn)換
int轉(zhuǎn)換為枚舉
Gender gender = (Gender)n1; n1為0時則輸出男。
string類型轉(zhuǎn)換為枚舉
Gender gender = (Gender)(Enum.Parse(typeof(Gender),"男"));
三、結(jié)構(gòu)
public struct Person //定義結(jié)構(gòu)
{
public string name; //定義字段
public string tel;
}
Person zsPerson; //使用結(jié)構(gòu)
zsPerson.name = "zs"; //結(jié)構(gòu)賦值
zsPerson.tel = '138484848448';
四、數(shù)組
聲明數(shù)組并指定長度
數(shù)據(jù)類型[] 數(shù)組名=new 類型[數(shù)組長度];
賦值 數(shù)組名[0]=1;
從0開始 int類型數(shù)組 默認值0
數(shù)組名.length 獲得數(shù)組長度
int [] nums = new int[10]; //定義數(shù)組
nums[0] = 1;
nums[1] = 2; //賦值
int lengt = nums.Length; //得到長度
for (int i=0; i< nums.Length; i++) // 遍歷取值
聲明時直接賦值不指定長度
string[] names = { "zhangsan", "lisi", "wangwu" };
string[] names = new string[3] { "zhangsan", "lisi", "wangwu" };
數(shù)組長度需要和值長度相等 就是不能不符
string[] names = new string[] { "zhangsan", "lisi", "wangwu" }; //可以省略數(shù)組長度
五、冒泡排序
讓數(shù)組中的元素兩兩比較(第i與第i+1比較)經(jīng)過n(個數(shù)-1)次比較
從大到小排序 用小于比較 成立就交換
方法
方法就是將一堆代碼進行重用的一種機制,可能有輸入的值,返回的值,執(zhí)行后返回結(jié)果。
方法一般定義在類中,如果方法沒有返回值則使用void。
新聞熱點
疑難解答