1、C#基礎:變數、運算子、分支、迴圈、枚舉、數組、方法 <轉>

來源:互聯網
上載者:User

標籤:

轉自:海盜船長

連結:http://www.cnblogs.com/baidawei/p/4701504.html#3241882

C#、.Net以及IDE簡介

一、什麼是.Net?

.Net指 .Net Framework架構,一種平台,一種技術。

.Net Framework架構是.Net平台不可缺少的一部分,它提供了一個穩定的運行環境來保證我們基於.Net平台開發的各種應用能夠正常運轉。

.Net Framework 各版本區別

2002年 1.0------vs2002

統一類型系統,基礎類庫,記憶體回收,多語言支援、ado.net 1.0、asp.net 1.0、winform 1.0。

2003年 1.1------vs2003

安全方面升級、內建對ODBC Oracle的支援,支援ipv6

2005年 2.0------vs2005

提升安全性、效能、泛型和內建泛型集合、基礎類庫的擴充、引入事務Transaction

2006年 3.0------需要2.0架構支援

WCF(WEB服務)、WF(工作流程)、WPF(使用者介面統一)、WCS(數位識別碼使用者控制項)

2007年 3.5------vs2008

asp.net AJAX、Linq、自動屬性、對象初始化器、集合初始化器、擴充方法、Lambda運算式、查詢文法、匿名型別、LinqtoSQL、MVC

2010年 4.0------vs2010

DLR、dynamic、預設參數、具名引數、並行開發等

.NET Framework 由.NET Framework類庫和通用語言執行平台兩個主要組件組成

CLS(Common Language Specification):用來保證語言之間的相容性,只要遵循CLS任何一種.net語言編寫的組件都可以被其他語言所引用。

CTS(一般型別系統):定義了如數字、字串和數組等資料類型的規則,這樣他們就能為所有的.net語言所共用。

CLR(公用語言運行庫): 只是用來執行中繼語言代碼。然後把他們編譯成為機器語言讓他們能在當前平台執行。

DLR(動態語言運行時):4.0的新特性,CLR為c#和vb提供了通用的平台,而DLR則為javascript、Ruby等com組件提供了通用平台。

二、什麼是C#?

C#是一種程式設計語言,可以開發基於.Net平台的應用。

.net 是一種多語言開發的平台 vb c++ F# 等,主要使用C#程式設計語言進行開發。

三、.Net能幹什嗎?

1、傳統型應用程式(Winform),就是軟體。

2、Internet應用程式(ASP.NET),就是網站。

3、手機開發 wp8

4、Unity3D 遊戲開發

四、.Net互動模式

C/S:Clinet/Server,用戶端對伺服器,需要安裝在電腦上的軟體。

B/S:Browser/Server,瀏覽器對伺服器,不需要安裝在電腦上,通過網頁開啟。

五、什麼是IDE?

IDE 是指我們使用的開發工具,visual studio就是最常用的一種。

visual studio使用

啟動方式:雙擊表徵圖、命令:devenv

建立控制台項目:建立項目 c# 控制台 右上方.net framework 版本 項目名稱

解決方案關係:解決方案中包含多重專案,項目中包含多個檔案,檔案中命名空間包含類,類中可以包含方法,方法中包含程式碼。

.sln尾碼的檔案是解決方案檔案,包含整個解決方案的資訊。類檔案以.cs結尾。

.csproj 專案檔裡麵包含項目的資訊。

解決方案 右鍵 新增項目 建立項目追加到解決方案 多重專案時 可以設定某個項目為啟動項目 啟動時自動啟動該項目 項目可以卸載 和追加 當執行編譯時間 不再檢查已卸載的項目 工具->匯入匯出設定 中有個重設開發環境, 設定下可以設定字型 行號。

常用快速鍵: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方法是程式的入口方法。 執行一個程式時,首先找到main方法,從main方法中第一句程式開始執行,當main方法執行完畢後程式就結束了。 一個程式只能有一個main方法

輸入輸出

123 Console.WirteLine(); //向控制台輸出一句話。 Console.ReadLine();  //向控制台輸入一句話。

每一句代碼以;結束

啟動方式:f5帶調試啟動,shift+f5不啟動

產生解決方案編譯項目F6

八、xmind 繪圖軟體

建立空的  tab鍵 新增子節點   斷行符號鍵 新增兄弟節點

F7快捷 F8預覽

 

基礎文法

一、注釋

// 單行注釋 ctrl+k+c ctrl+k+u取消

/* */ 多行注釋

/// 文檔注釋

#region #endregion 摺疊代碼 ctrl+k+s #reg

二、配置c#編譯環境

c#來源程式需要.net framework SDK安裝程式提供的C#編譯器 csc.exe來編譯,需要設定環境變數。

我的電腦-屬性-系統屬性-進階-環境變數-系統內容變數-系統變數-選擇path-點編輯-將sdk安裝程式路徑添加到變數值。

C:\Windows\Microsoft.NET\Framework\v4.0.30319 //我的路徑 path中;區分

cmd 進入源檔案目錄 輸入csc xxx.cs 該目錄下會編譯為xxx.exe可執行檔 cd C:\Users\大偉\Desktop\abc\abc---> csc Program.cs

三、變數

用來在電腦中儲存資料,儲存於記憶體中。記憶體是臨時儲存資料 斷電時記憶體中資料丟失

編寫的代碼存在記憶體中, 儲存後從記憶體中儲存到硬碟中 變數代表著一塊記憶體空間,可以通過變數名稱向記憶體中存/取資料。

1、聲明變數

資料類型 變數名;

例:int a; string b; double c;

2、變數賦值

變數名=值; 其中"="為賦值運算子,把右側值賦給左側變數。

例:a = 1;b = "asd";c = 2.13; 優先順序最低a=a+1;算完在賦值;

3、聲明並賦值

資料類型 變數名 = 值;

例:int a = 1;

變數可以重複賦值,以最後一次為準,但不可以重複聲明 變數必須先聲明後使用

四、資料類型

整型:int、浮點數:double、字元:char、字串:string、貨幣:decimal。

double 精度15~16位,16後不再顯示, decimal精度29 後面加m/M否則按double類型報錯。

4.0新特性

System.Numerics.BigInteger 大整數類型 需要framework 4.0或以上 如果沒有 檢查bll是否引用程式集

BigInteger big = new BigInteger(1000000000);
long value = 31313892839283;
BigInteger big = value;

dynamic 動態資料類型

運行時才檢查資料類型

dynamic v = 124;

Console.WriteLine(v.GetType()); //System.Int32

五、變數命名規則

必須字母或_或@開頭、不可以數字開頭。後面可以跟數字、字母、底線。

不可以與系統關鍵詞重複、大小寫敏感、不可以重複定義。

如果縮寫單詞全部大寫ICBC,多個單詞第二個單詞大寫首個小寫fuckYou? 或每個都大寫FuckYou!

六、“+”號的使用

“+”數字相加(左右都是數字)  例:1+1

“+”字串連結(有一個是字串) 例:string result = "haha" + 123;

七、預留位置

"我叫{0},身高{1}",one,two; 右側保證與左側預留位置個數相同 否則報錯

console輸出中","後面都是用來替換預留位置的

八、變數交換

int a = 5,b = 10,temp;

temp = a;

a = b;

b = temp; // 完成交換

九、逸出字元

由\加上一個字元組成可以輸出的特殊字元

\"輸出引號 \n換行 \b退格 backspace鍵 刪除前一個 \t tab鍵 行對齊 \\ 輸出\

字串前面加@標識該字串有\不再轉義,字串可以換行,輸出“時用兩個“

十、算術運算子

+ - * / % 二元運算子 兩個數字運算

十一、算術運算式

由運算子連結兩個數組成運算式 a+b

十二、類型轉換

隱式類型轉換:也叫自動轉換,當目標類型大於源類型時發生轉換。(小的轉成大的)

顯示類型轉換:也叫強制轉換,把double強制轉換成int不要小數點【(資料類型)值】(大的轉成小的)

(int)string 右側string必須是整數才可以轉換。

Convert轉換

Convert.ToInt32(帶轉換字串); //轉換為Int;

Convert.ToString(number); //轉換為字串

類型都有一個.ToString() 也可以用這個方法轉換為字串

十三、可空類型? 
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;

三、關係運算子

>大於 <小於 ==等於 !=不等於 >=大於等於 <=小於等於

兩個數的操作稱為二元運算子

四、布爾類型

bool 類型只有兩個值:真true、假false。

關係運算的結果是布爾類型的

五、邏輯運算子

&&與 : 左右運算式都成立則為true

|| 或 : 左右運算式有一個成立就為true

! 非 : 不成立則為true

六、三元運算子

a1= =a2 ? "a" : "b" 成立輸出a 否則輸出b

 

分支結構

一、If

if(判斷條件)
{
    要執行的代碼; 
}
判斷條件一般為關聯運算式或bool類型的值,如果判斷條件成立則執行大括弧內代碼。

二、If-else

if(判斷條件) 

    成立的代碼
}else { 
    不成立的代碼 

如果判斷條件成立,執行大括弧內代碼,否則執行else內代碼。

三、If-else If

用來處理多條件的區間性判斷

1 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

}

 

迴圈結構

一、While迴圈

先判斷再執行

int i = 0; 
While(i<100) //條件 

    i++; 
    if(i==50)
        break; //跳出迴圈
}

二、do-while迴圈

先執行再迴圈

do
{
    i++;
}while(i<50);

三、for迴圈

規定次數的迴圈

for(int i = 1;i<10;i++){
    console.writeline(i);
}

四、foreach迴圈

迴圈集合

foreach(var item in list){
  console.writeline(item.xx);
}

迴圈的集合 見第二章 都是迴圈就放這了 大量資料情況下 沒有for效率高

五、跳躍陳述式

break 立即跳出迴圈

continue 結束本次 繼續下次迴圈

goto跳轉到指定位置

return 返回

throw 拋出異常

 

常量、枚舉、結構以及數組

一、常量

不可改變的值

const 類型 名=值

const pi=3.14;

二、枚舉

限制賦值 在定義枚舉時的集合中選值

public enum Gender //定義枚舉
{
    男,
    女
}

Gender gender = Gender.男; //枚舉賦值

定義枚舉時,值不能是int類型的,那樣做沒有意義。

枚舉轉換為int

枚舉的類型可以跟int類型互相轉換,枚舉類型與int類型相相容。

枚舉的值在定義時是有一個預設編號的,從0開始。

(int)Gender.男; //值為0 女為1 每次遞增1

改變枚舉的預設值定義時賦值,則預設從此值開始。

public enum Gender //定義枚舉
{
    男=2,
    女
}

這時(int)Gender.男 值為2,女則為3.

 

枚舉類型轉換

int轉換為枚舉

Gender gender = (Gender)n1; n1為0時則輸出男。

string類型轉換為枚舉

Gender gender = (Gender)(Enum.Parse(typeof(Gender),"男"));

三、結構

public struct Person //定義結構
{
    public string name; //定義欄位
    public string tel;
}

Person zsPerson; //使用結構
    zsPerson.name = "zs"; //結構賦值
    zsPerson.tel = ‘138484848448‘;

四、數組

聲明數組並指定長度

資料類型[] 數組名=new 類型[數組長度];

賦值 數組名[0]=1;

從0開始 int類型數組 預設值0

數組名.length 獲得數組長度

int [] nums = new int[10]; //定義數組

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" };

數組長度需要和值長度相等 就是不能不符

string[] names = new string[] { "zhangsan", "lisi", "wangwu" }; //可以省略數組長度

五、冒泡排序

讓數組中的元素兩兩比較(第i與第i+1比較)經過n(個數-1)次比較

從大到小排序 用小於比較 成立就交換

int[] nums = { 1, 5, 23, 8, 5, 0, 4, 5 };for (int i = 0; i < nums.Length - 1; i++){    for (int j = 0; j < nums.Length - 1 - i; j++)    {        if (nums[j] < nums[j + 1])        {            int temp = nums[j];            nums[j] = nums[j + 1];            nums[j + 1] = temp;        }    }}for (int i = 0; i < nums.Length; i++){    Console.WriteLine(nums[i]);}Console.ReadKey();

 

方法

方法就是將一堆代碼進行重用的一種機制,可能有輸入的值,返回的值,執行後返回結果。

方法一般定義在類中,如果方法沒有傳回值則使用void。

[存取修飾詞][static] 傳回值類型 方法名([參數]) //[] 中可又可無{return; //返回}

 

public static void showView(){Console.WriteLine("Hello World!");}//static 靜態 調用 class.showView();  一、變數範圍全域變數 定義到類中 所有方法通用 靜態方法中使用定義時也要用靜態局域變數 在哪個方法定義 在哪用 二、參數參數個數,類型要相同 int.Parse(string) 類似 Convert.ToInt32(string)static void Main(string[] args){    test("Diavd", 18);}public static void Test(string name, int age){    Console.WriteLine("my Name is {0} , Age is {1}", name, age);} 三、傳回值public static string Test(int a){    if (a == 1)    {        return "1";    }    else    {        return "other";    }}傳回值要與傳回型別相同。 四、方法重載方法名相同 參數個數或類型不同 可以構成 與傳回值無關static void Main(string[] args){    int m = Max(10, 20);    double d = Max(10.3, 20.3);}public static int Max(int one, int two){    if (one > two)    {        return one;    }    else    {        return two;    }}public static double Max(double one, double two){    if (one > two)    {        return one;    }    else    {        return two;    }} 五、out用來返回一個值; 傳出 通過參數返值//可以在方法內不賦值下直接使用static void Main(string[] args){    int number; //number已經是20了;    int result = test(out number);}//number可以不賦值便使用,調用時也需要寫out
static int test(out int a){    a = 20; //如果方法參數名標記為out 則方法中必須對其賦值。    return a;}int number = int.Parse("a12");// 如果失敗則拋出異常。
int result;bool number2 = int.TryParse("a12", out result); //第一轉換字串,第二返迴轉換成功的值 或失敗為0;傳回值是否成功 true false; 六、ref引用傳遞 方法內的值改變了 外面也將改變static void Main(string[] args){    int number = 100;    test(ref number); //執行後number為500}static void test(ref int a){    int b = a; //不對a進行賦值直接使用    a = 500; //此時不是變數賦值 而是記憶體位址邊為number 相當於建立捷徑 而不是複製一份} 七、params可變參數 public void test(string name,params int[] ages)
{
    

//調用 數組長度可變
test("a",12,12,12); 
test("b",13,2);可變參數必須是參數列表的最後一個參數4.0新特性 1、選擇性參數 可以為選擇性參數省略參數值,每個選擇性參數都具有預設值作為定義的一部分public void abc(int num1,int num2,string oper = "+")其中num1,num2為必選參數,oper為選擇性參數,不輸入時預設為+ 2、具名引數 可以在調用參數時,不按照順序進行調用public void abc(int num1,int num2,int num3)abc(num2:123,num3:123,num1:123); 八、方法遞迴自己調用自己 多用於遞迴尋找磁碟檔案public int Sum(int n){
    if(n<=0){
        return 0;
    }
    return n + Sum(n-1);
} //1+2+3+..+n和

1、C#基礎:變數、運算子、分支、迴圈、枚舉、數組、方法 <轉>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.