C#開發輕松入門(慕課網)
1、C#簡介
1-1 .NET簡介
.NET平台可運用多種語言編程,C#配合的最好。
1-2 Visual Studio簡介及安裝
...
1-6 Hello World
控制台程序:Main方法,程序的入口
Console.Write("Hello World\n"); // Ctrl+F5直接運行
namepalce命名空間--class類(C#程序有一個一個的類組成)
2、C#語法基礎
const常量
數組聲明:
string[] name = new string[3]; char[] a = new char[] {'a', 'b', 'c'}; char[] a = {'a', 'b', 'c'}; //二維數組,看作是數組的數組 int[,] arr = new int[2,3]; //包含2個一維數組,每個一維數組包含3個變量,總共2*3=6個數組元素
foreach
foreach循環可以不依賴索引而讀取每一個數組元素,有迭代的意思
int[] num = {1, 2, 3}; foreach(int i in num) { Console.Write(i); }
在控制台接收輸入:
string name; name = Console.Readline();
在C#中進行斷點跟蹤和調試:
F9設置/取消斷點
F5進行調試
F10進行單步執行
F11進入方法體
用C#實現封裝(慕課網)
1、C#中的類和對象
1-1 類和對象的概念:
面向對象、封裝、繼承、多態、類、對象、字段(屬性)、方法。
實例化
1-2 定義類
在項目處右擊添加類
namespace MyFirstApp { /// <summary> /// 小朋友 /// </summary> class Child { public string name; public int age; public void playBall() { Console.Write("我是LBJ"); } } }
1-3 實例化對象並訪問對象成員
Child XiaoMIng = new Child();//實例化對象 XiaoMing.name = "小明";//為字段賦值 XiaoMIng.playBall();//調用方法
1-4 訪問修飾符public&private
public(公共的)、private(私有的)
默認為private
2、屬性的封裝
2-1 封裝的概念
為什麼要在程序中使用封裝--使用封裝(隱藏對象的信息、留出訪問的接口)
class Child { private string _sex; public string Sex { //get、set、value都是關鍵字 get{return _sex;}//讀訪問器 set{_sex = value;}//寫訪問器 } }
2-2 代碼實現屬性的封裝
封裝的快捷鍵:Ctrl+R+E
class Child { private string _name; //使用快捷鍵Ctrl+R+E實現快速封裝 public string Name { get { return _name;} set { _name = value;} } }
2-3 只讀屬性
只有get訪問器,用構造方法為字段進行初始化
2-4 通過set塊約束屬性賦值
private int _age; public int Age { get { return _age; } set { //約束屬性賦值 if(value>3 && value<7) _age = value; } }
3、方法
3-1 定義並調用無參方法
。。。
3-2 定義並調用帶參方法
形參實參
public void EatSuge(string suger) { if(suger == "榴蓮糖") //輸出 else //輸出 }
3-3 方法的重載(通過實參類型和參數數量的不同確定)
public void EatSuge(int count) { //... } public void EatSuge(string suger, int count) { //... }
3-4 通過return結束方法調用或帶回返回值
4、構造方法
4-1 默認構造方法、無參構造方法和有參構造方法
構造方法:在實例化對象時為屬性賦初始值
通常聲明為public,可重載
無參:
public Child() {//...}
有參:
public Child(string name, string sex, int age) { _name = name; _sex = sex; _age = age; }
4-2 this關鍵字
this代表當前對象
public Child(string name, string sex, int age) { this._name = name; this._sex = sex; this._age = age; }
4-3 對象初始化器
Child child = new Child(){Name = "asf", Age = 5};
5、值類型和引用類型
5-1 值類型與引用類型
**值類型:int、char、double、bool
//x的值不變,創建了y副本 //值類型變量存儲對象的值,賦值會創建值得副本,修改任何副本都不會影響其他副本 int x; int y=x; y--;//y變x不變
**引用類型:類(string)、數組、接口
//引用類型存儲對象的內存地址 //賦值不會創建值得副本,只會創建地址的副本 //修改任何一個副本,也同時修改其他的副本 Child c1 = new Child(); c1.Name = "張小明"; Child c2 = c1; c2.Name = "劉小勇"; Console.Write(c1.Name);//輸出為劉小勇 Console.Write(c2.Name);//輸出為劉小勇
5-2 結構(值類型,也可以有字段、屬性和方法)
結構與類的不同:
最根本的區別是結構是值類型,而類是引用類型;
結構的字段不能賦初始值;
結構不能定義無參的構造方法;
結構內的構造方法裡必須為所有的字段賦值;
結構定義時不必須實例化;
5-3 枚舉(值類型)
舉例:用枚舉限制sex的賦值
enum Gender { 男,女 }
特點:
枚舉是值類型;
枚舉不能定義字段、屬性和方法;
枚舉值是從0遞增的整數。
5-4 方法傳參中的值類型和引用類型
值類型與引用類型賦值時不同造成的差異
引用類型,按引用傳參,傳遞的是地址--導致形參改變實參也改變
值類型,按值傳參,傳遞的是值副本--形參改變,實參不變
5-5 ref關鍵字
//使得值類型的參數可以按照引用傳參 class Program { static void Main(string[] args) { int age = 2; increase(ref age);//傳入age的引用,類似於C++的&age Console.Write(age); } static void increase(ref int Age)//ref int傳入引用,類似於C++的int& { Age++; } }
5-6 out關鍵字
返回多個值
舉例:
class Program { static void Main(string[] args) { int ly, ny;//去年的年齡,明年的年齡 int age = 2; lyny(age, out ly, out ny);//返回去年的年齡和明年的年齡 Console.WriteLine(ly+" "+ny);//輸出1 3 } static void lyny(int Age, out int lastyear, out int nextyear)//輸出去年的年齡和明年的年齡 { lastyear = Age - 1; nextyear = Age + 1; } }
5-7 課程總結
封裝
類和對象
把字段封裝成屬性
方法
構造方法
值類型和引用類型