天天看點

C#實驗上機

第二章--C#文法基礎:

一,注釋語句

/*注釋語句包含在"反斜杠* "和" *反斜杠"中,

或者兩個反斜杠和換行符之中,

或者三個反斜杠和換行符之中(可以被VS自動識别為檔案注釋以提取)

要注意注釋中的\,該續行符會把下一行連上來一起注釋掉出錯。*/

static void Main(string[] args) 

{//語句塊包含在{}中  

 int MyInterger;//語句以;結束 

 string MyString;///忽略空白字元(空格/回車/TAB) 

 MyInterger = 17;  }

//要注意防止注釋嵌套出錯,可用#if,#endif預處理語句。

二,資料類型

1,基本型/内置型 使用者自定義型

A,内置類型:CS使用.net FrameWork

​​?​​

庫中的資料類型

sbyte = System.SByte,...

C#實驗上機
<span style="font-size:12px;color:#000000;">//結構類型
using System;
struct Student
{
    public int no;
    public string name;
    public string phone;
    public Student(int stu_no, string stu_name, string stu_phone)//構造函數,作為結構體的構造函數,要麼給變量全部指派,要麼保持預設
    {
        no = stu_no;
        name = stu_name;
        phone = stu_phone;
    }
}
class douge
{
    public static void Main()
    {
        Student stu=new Student(945546,"zhangsan","12035884");
        Console.WriteLine(stu.no);
        Console.WriteLine(stu.name);
        Console.WriteLine(stu.phone);
        //Console.Read();
    }
}</span>      
<span style="color:#000000;">
//使用枚舉
using System;
class enumtest
{
    enum color : long { Red = 56565654L, Green, Yellow, Blue = 355L };//聲明枚舉的元素為LONG型
    public static void Main()
    {
        long a = (long)color.Green;
        long b = (long)color.Blue;
        Console.WriteLine("Green={0}",a);
        Console.WriteLine("Bule={0}", b);
        Console.Read();
    }
}

</span>      
<span style="color:#000000;">
//數組的引用
using System;
class test
{
    static void Main()
    {
        int i,j;
        int[] arr = new int[5];
        for (i = 0; i < arr.Length; i++)
        {
            arr[i] = i<<4;
        }
        for (j = 0; j < arr.Length; j++)
        {
            Console.WriteLine("arr[{0}]={1}", j, arr[j]);
        }
        Console.Read();
    }
}</span>      
<span style="color:#000000;">
//交錯數組的舉例
 
using System;
class ArrayTest
{
    static void Main()
    {
        int [][] arr=new int [2][];
        arr[0]=new int [5] {1,3,5,7,9};
        arr[1]=new int [5]{2,4,6,8,10};
        for(int i=0;i<arr.Length;i++)
        {
            System.Console.Write("Element({0}):",i);
                for(int j=0;j<arr[i].Length;j++)
                {
                    Console.WriteLine("{0}{1}",arr[i][j],j==(arr[i].Length-1)?"":"");

                }
            System.Console.WriteLine();
        }
        Console.Read();
 }
}</span>      
<span style="color:#000000;">
//ArrayList類的使用
using System;
using System.Collections;
class HE
{
    static void Main()
    {
        ArrayList books = new ArrayList();
        books.Add("C#程式設計!");
        books.Add("面向對象程式設計思想");
        Console.WriteLine("count:{0}", books.Count);
        Console.WriteLine("capacity:{0}", books.Capacity);
        Console.WriteLine();
        Console.WriteLine("使用疊代器通路集合中的對象");
        foreach (object book in books)
        {
            Console.WriteLine(book);
        }
        Console.WriteLine();
        Console.WriteLine("使用For循環通路集合中的元素");
        {
            for (int i = 0; i < books.Count; i++)
            {
                Console.WriteLine(books[i]);
            }
        }
        Console.Read();
    }
}</span>      

B,使用者定義類型包括:

類類型(class)

結構類型(struct)

接口類型(interface)

2,值類型(Value Types)和引用類型(Reference Types)

A,值類型:記憶體順序配置設定在棧中。他們包括:所有基本或内置類型(不包括string類型)、結構類型、枚舉類型(enum type)

B,引用類型:記憶體非線性配置設定在堆中,當它們不再被使用時CS通過垃圾收集器自動釋放記憶體(C++用delete)。它們使用new運算符來建立。

引用類型包括:類類型、接口類型、象數組這樣的集合類型類型、字串類型、枚舉類型

結構型适于快速通路和擁有少量成員的資料類型。如果涉及量較多,你應該建立一個類來實作他。

3,資料類型轉換

隐式轉換:從低精度的轉換到高精度的,是以不可能轉換到char;另外可以把0隐式轉換成枚舉型,其他整數不行。

顯式轉換

三,變量:

1,普通變量:

(1),命名規則:字母或_或@ + 字母或_或數字 (/用于轉義,@用于逐個轉義指定,@常用于保留關鍵字前以保持與其他語言相容)

(2),聲明變量: 變量類型 變量名

變量指派:變量 = 要賦的值

C#變量被通路之前必須被初始化;否則編譯時會報錯。是以,不可能通路一個未初始化變量(如不确定的指針、超出數組邊界的表達式)。變量在使用前最好習慣是要先聲明和初始化。

(3)C#中沒有全局的的變量或全局函數,全局方式的操作是通過靜态函數和靜态變量來實作的。

int i;string text;//在循環外未初始化for (i = 0;i<10;I++){text = "Line" + Convert.ToString(i);//在循環中未初始化,在退出循環的時候會丢失值,再引用就出錯。Console.WriteLine("{0},text);}Console.WriteLine("Last txet output in loop:{0},text);//出錯。改正方法是在循環外初始化:string text="";      

(4)命名約定:簡單的用camelCase,複雜的用PascalCase

​​?​​

(5)變量的七種類型:

class A{public static int x;//靜态變量,存在期從類裝載直到該程式結束。int y;//非靜态變量,或執行個體變量,從類執行個體建立到執行個體空間釋放。/*v[0]是數組元素,a是值參數,b是引用參數,c是輸出參數 */void F(int[] v,int a,ref int b,out int c){int i = 1;//局部變量,不會被初始化c = a + b++;//}}      

2,枚舉

enum 枚舉名:枚舉值類型(預設是int,預設指派0,1,2...)  {   枚舉值1=...,   枚舉值2=...,   枚舉值3,//不指派的話,預設為最後一個明确具體值的值+1   ...  }  枚舉名 變量名=枚舉名.枚舉值namespace      

3,結構

  struct 結構名:  {   通路方式1 變量類型1 變量名1;//通路方式public/private   通路方式2 變量類型2 變量名2;     ...  }  結構名 結構變量名;  結構變量名.枚舉值=...;

4,一維數組

  變量類型[] 數組名 = new 變量類型[元素個數]{元素0,元素1,元素2...}//元素個數必須是整數或者整數常量,而且必須與後面的元素列值個數相同,否則出錯。元素個數的new聲明和後面的元素列值可以隻選一個,就能聲明并初始化數組。

周遊方法

A,For循環到.Lengthfor(i=0,i<friendNames.Length,i++){Console.WriteLine(friendNames[i]);}B,Foreach進行隻讀通路foreach(string listName in friendNames){Console.WriteLine(listName);}

5,二維數組(多元)

  變量類型[,] 數組名 = new 變量類型[一維元素個數,二維元素個數]{{元素00,元素01,元素02...},{元素10,元素11,元素12...}...}

6,直角數組(交錯數組,數組中的數組)

七,條件語句

A,If語句:通用判斷

If (條件1)    代碼1;  Else    代碼2;  If (條件1)  {}  Else  {}      

B,Switch語句:用于同條件多結果判斷

Switch (條件)   {    Case 結果1:    代碼1;    break;    Case 結果2:    代碼2;    break;    Case 結果3:    代碼3;    goto Case  結果2;//此時Case..相當于一個Label    Case 結果4:    代碼4;    Return;    Case 結果5:    Case 結果6:    Case 結果7:    代碼567;//隻要滿足上面三個Case之一就執行。    break;    ...    Default:    代碼;    break;   }      

C,三元運算語句:(條件)?True結果:False結果

常用于簡單指派語句:string myString = (myInteger<10)?"Less than 10":"Great than or equal to";

或者用于簡單格式化文本語句:Console.WriteLine

​​?​​("I am {0} year{1} old.",myinteger,myinteger==1?"":"s");

八,循環語句:

A,Do...While: 當條件為True時循環。

Do  {...}  While(條件);//分号不可少      

B,While...: 當條件為True 時循環。

While(條件)  {...}      

C,For...: 使用計數器循環。

For (變量;條件;操作)//可以在此時聲明變量,但作用域就僅限于循環内了。  {...  Break;//跳出整個循環  Return;  Continue;//中止目前循環,繼續下一個循環  Goto 标簽;//禁止從循環外部用goto跳入循環内部  }      

九,函數

A,函數定義:static 傳回值類型/void 函數名(參數類型1 參數1,參數類型2 參數2,...){...return 傳回值;//return必須在函數結束前被處理,不能跳過//return ;//當用于void時用不帶傳回值的return來中止函數。}      

B,參數數組:

static int sumVals(params int[] vals){int sum = 0;foreach(int val in vals){sum+=val;}return sum;}static void Main(string[] args){int sum = sumVals(1,5,2,9,8);Console.WriteLine("Summed Values = {0}",sum);}C,值傳遞參數/引用傳遞參數/out輸出參數static void showDouble(ref int val)//引用傳遞參數{val*=2;Console.WriteLie("val doubled = {0}",val);}static void showDouble2(int val)//值傳遞參數{val*=2;Console.WriteLine("val doubled = {0}",val);}static void showDouble3(int val,out int valIndex)//out輸出參數{val*=2;valIndex++;Console.WriteLine("val doubled = {0}",val);}int myNmuber = 5;showDouble(ref myNumber);//引用傳遞參數,會改變myNumber值,是以要求myNumber必須不是常量或者未初始化的變量。showDouble2(myNumber);//值傳遞參數,不會改變myNumber值int valindex;//out輸出參數,不用初始化,初始化了也會在函數開始執行時丢失值。showDouble3(myNumber,out valIndex);      

D,全局變量

static/const 變量名//const定義的全局變量是隻讀的

當全局變量與局部變量同名時,局部變量優先,要用類似class1.myString來引用全局變量。

E,Main()函數;

static void Main()static void Main(string[] args)//args是函數指令行參數static int Main()//傳回一個表示函數終止狀态的int值static int Main(string[] args)//傳回一個表示函數終止狀态的int值      

F,結構中的函數

G,同名函數的重載:同名,簽名不同,系統自動識别使用哪個函數

H,委托:用于把引用存儲為函數以靈活調用函數

十,面向對象基礎

十一,類

1,類的定義

class 類名{//類成員}internal/publicsealed/abstract      

十和,接口

interface IMyInterface{//接口成員}