摘要:Mr.謝 教學筆記
應用程式開發流程粗分為
- 分析/建立應用程式規格
- 使用者介面設計
- 程式設計與建置
- 測試及除錯
- 建置與部署
所得即所見的設計介面(WYSIWYG,What You See Is What You Get)
solution(方案) 可是為project的容器,可將相關的project放入同個solution,一旦開啟solution便自動開啟包含的project
物件導向的程式 - 封裝.繼承.多型
區域變數
用在方法 判斷式或是迴圈裡的變數稱為區域變數
區域變數會隨著方法被建立但不會自動初始化
宣告唯讀
唯讀變數 _ 可以在執行時期再決定 readonly int p=GetNumber();
常數 _ 必需在編譯時期就決定 const int c=100;
___________________________________________________________________________
C#基本型別觀念
- 實值型別 _ 直接存放在變數位置中 (整數,浮點數.字元.bool.程式所定義的資料結構.列舉型別資料)
- 參考型別 _ 在heap記憶體區塊中間建立實體燃後在將實體的參考指標紀錄在指定的變數中(字串.陣列.程式中使用的物件類別)
實值型別的特點:
- 將資料直接存放在變數位置中
- 資料傳遞時,將資料複製到另一個變數中
參考型別的特點:
- 參考型別資料需要使用new指令來建立物件實體,在將實體的參考紀錄在變數中
- 資料傳遞時,變數會將實體的參考複製到另一個變數中
___________________________________________________________
使用者自訂資料結構 為實質型態
使用struct保留字宣告 _ 可宣告成員變數.屬性.方法 _ 成員變數宣告不可設初值 _ 不可宣告預設的建構函式
舉例:
public struct MyDate
{
public int year;
public int month;
public int date;
}
//此為實體型別 程式使用時不需透過new來建立實體
MyDate Birthday;
Birthday.year= 1990;
Birthday.month=01;
Birthday.date=02;
________
列舉型別 為整數型態資料 預設(int)
使用enum保留字宣告
enum EmplyeeType
{
Sales,
Instructor,
Manager
}
//必須對應一個整數型態, 如沒對應 會對應到預設Int
EmplyeeType e;
e = EmplyeeType.Sales;
_______________________________-
隱含式資料轉換
int a=123;
long b=a;
明確式資料轉換
int a =12;
byte b = (byte) a
匿名型別
- 資料是唯獨的
- 可快速宣告所需型別及資料
- 可用於LINQ語法
- 由編譯器自行決定型別
var PersonInfo = new { Name="Amy" , Money=10000 };
參數 根據資料傳遞方向可分為
- 輸入參數
- 參考參數
- 輸出參數
- 參數陣列
PassByValue 輸入參數
int i=10 ;
PassByValue (i);
Console.WriteLine("i="+i);//i=10
// i 會複製值到 j (實質型別)
public int PassByValue (int j )
{
return j+100;
}
PassByReference參考參數
就是使用ref修飾詞宣告的參數,參數並不會建立新的儲存位置。
int i= 123;
passByRef (ref i );
Console.WriteLine("i = "+i ); // i=223
static void PassByRef (ref int j )
{
j+=100;
}
實際上是存取到外部變數的位置,修改裡面的資料。
輸出參數
使用out修飾詞宣告,負責將方法中的資料傳出。輸出參數並不會建立新的儲存位置。
外部變數位置的參考將會被傳入到輸出參數中。和參考參數不同的是不會從外部變數中讀取資料
因此外部變數不需事先初始化。
int i;
PassByOut(out i );
Console.WriteLine("i="+i); // i=100
public void PassByOut ( out int j )
{
j=100;
}
參數陣列
可以接受不固定個數的同型別資料 (ex:每個班級都有不同的學生數)
使用params修飾詞宣告
必須為一維陣列 , 必須為參數列最後一個參數
public double Average(params int[] grades)
{
double total=0;
for(int i = 0 ; i <grades.length;i++)
具名參數
C# 4.0之後才有的
public int AddNum(int x,int y, int z)
{ return x+ y+z ;}
//原本(不具名)
int p=AddNum(1,2,3);
//具名
int q=AddNum(y:2,x:1,z:3);
選擇性參數
C# 4.0之後才有的
public int AddNum (int x=0; int y=0,int z=0)
{ return x+y+z ;}
int p = AddNum(1,2);
//Z的位置將會是預設值