-
Hello Worldsql
//打印語句 Console.WriteLine("Hello World"); //暫停 Console.ReadKey();
-
數據類型
1.值類型 byte,char,short,int,long,bool,decimal,float,double,sbyte,uint,ulong,ushort
2.引用類型: 儲存的不是值實際數據而是一個內存地址 object、dynamic 和 string。
3.對象類型:Object 類型檢查是在編譯時發生的
4.動態類型: 能夠存儲任何類型的值在動態數據類型變量中,類型檢查在運行時
5.字符串(String)類型
6.指針類型(Pointer types)數據庫 -
類型轉換c#
- 隱式轉換
- 顯式轉換
- Toxxx方法
-
變量windows
-
常量數組
- 整數常量
- 整數常量能夠是十進制、八進制或十六進制的常量。前綴指定基數:0x 或 0X 表示十六進制,0 表示八進制,不帶前綴則默認表示十進制。
- 整數常量也能夠帶一個後綴,後綴是 U 和 L 的組合,U 表示無符號整數(unsigned),L 表示長整數(long)。後綴能夠是大寫,也能夠是小寫,U 和 L 的順序任意。
- 浮點常量(小數必須包含整數)
- 字符常量
- 字符串常量
- 定義常量
- 整數常量
-
運算符markdown
- 算數運算符
- 關係運算符
- 邏輯運算符
- 位運算符
- 賦值運算符
- 其餘運算符
- sizeof():數據類型的大小
- typeof():返回 class的類型。
- &: 返回變量的地址
- *:變量的指針
- ?: :三元表達式
- is:判斷對象是否爲某一類型
- as: 強制轉換,即便失敗也不會拋出異常
-
判斷:app
- if
- switch
-
循環:函數
- while循環
- for/foreach
- do…while
-
封裝:測試
- public:容許一個類將其成員變量和成員函數暴露給其餘的函數和對象。任何公有成員能夠被外部的類訪問
- private:容許一個類將其成員變量和成員函數對其餘的函數和對象進行隱藏。只有同一個類中的函數能夠訪問它的私有成員。即便是類的實例也不能訪問它的私有成員。
- protected:該類內部和繼承類中能夠訪問。
- internal:同一個程序集的對象能夠訪問。
- protected internal:3 和 4 的並集,符合任意一條均可以訪問。
-
可空類型ui
-
//默認值爲0 int a; //默認值爲null int? b=123; //若是b爲null就賦值2不然c=b int c= b?? 2; Console.WriteLine("c的值爲{0}", c); Console.ReadLine();
-
-
數組
//初始化數組逐個賦值 int[] arr = new int[10]; arr[0] = 12312; //初始化數組並賦值 int[] arr1 = { 321, 312, 12312, 12312312, 12312312 }; //使用for循環賦值 for (int i = 0; i < 10; i++) { arr[i] = i + 100; } //使用forEach取值 foreach (int i in arr) { Console.WriteLine("元素的值爲{0}", i); }
-
結構體
struct Books{ public string id; public string name; public string price; } static void Main() { Books book1; book1.id = "123"; book1.name = "aaa"; book1.price = "23131"; Console.WriteLine("書信息:書id{0},書名{1},書價格{2}",book1.id,book1.name,book1.price); Console.ReadLine(); }
- 類與結構的不一樣點
- 類是引用類型,結構是值類型
- 結構不支持繼承
- 結構不能聲明默認的構造函數
- 結構體中沒法實例屬性或賦初始值
- 類與結構的選擇
- 當咱們描述一個輕量級對象的時候,結構可提升效率,成本更低。數據保存在棧中,訪問速度快
- 當堆棧的空間頗有限,且有大量的邏輯對象或者表現抽象和多等級的對象層次時,建立類要比建立結構好一些;
- 類與結構的不一樣點
-
枚舉
//枚舉列表中的每一個符號表明一個整數值,一個比它前面的符號大的整數值,可自定義每一個符號 enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; static void Enum() { int a = (int)Days.Wed; Console.WriteLine(a); Console.ReadLine(); }
-
析構函數
class Test { string id; public Test() { Console.WriteLine("構造函數"); } ~Test() { Console.WriteLine("析構函數"); } static void Main() { Test test = new Test { id = "123" }; Console.WriteLine("id爲{0}", test.id); Console.ReadLine(); } }
-
多態性
- 經過在類定義前面放置關鍵字 sealed,能夠將類聲明爲密封類。當一個類被聲明爲 sealed 時,它不能被繼承。抽象類不能被聲明爲 sealed。
- 當有一個定義在類中的函數須要在繼承類中實現時,能夠使用虛方法。虛方法是使用關鍵字 virtual 聲明的。虛方法能夠在不一樣的繼承類中有不一樣的實現。
-
運算符的重載
class Test2 { public int length; //運算符重載 public static Test2 operator +(Test2 a, Test2 b) { Test2 test = new Test2 { length = a.length - b.length }; return test; } static void Main(string[] args) { Test2 test = new Test2 { length = 12 }; Test2 test1 = new Test2 { length = 213 }; Test2 t = test + test1; Console.WriteLine("t的值{0}", t.length); Console.ReadLine(); } }
-
預處理器指令
-
define 預處理器
- 條件指令
-
-
異常處理
- try catch finally
- 常見異常:
- IO異常
- 空對象
- 類型轉換
- 除以0
-
文件的輸入與輸出
//字節流讀取文件 static void Main(string[] args) { StreamReader streamReader =new StreamReader(@"D:\Document\test.txt"); string line; //讀取文件內容 while ((line = streamReader.ReadLine()) != null) { //打印出來 Console.WriteLine(line); } Console.ReadLine(); }
-
windows文件系統操做
static void Main(string[] args) { GetFile(@"D:\ProgramFiles"); Console.ReadLine(); } //得到某文件夾下的文件名與大小 static void GetFile(String path) { DirectoryInfo directoryInfo = new DirectoryInfo(path); DirectoryInfo[] directoryInfo1 = directoryInfo.GetDirectories(); FileInfo[] files = directoryInfo.GetFiles(); if(directoryInfo1!=null) { foreach(DirectoryInfo directoryInfo2 in directoryInfo1) { if(directoryInfo2.Name!="app") { GetFile(path+@"\"+directoryInfo2.Name); } } } if(files!=null) { foreach(FileInfo file in files) { Console.WriteLine("文件名:{0},文件大小{1}",file.Name,file.Length); } } }
-
特性
-
預約義特性
1.AttributeUsage
2.Conditional
3.Obsolete:[Obsolete("過期了")]
編譯器會給出警告信息[Obsolete("過期了",true)]
編譯器會給出錯誤信息 -
自定義特性
-
-
委託
delegate void ConsoleWrite1(); namespace ConsoleApp1 { class Program { static void Main(string[] args) { ConsoleWrite1 consoleWrite1 = new ConsoleWrite1(ConsoleWrite); consoleWrite1(); Console.ReadLine(); } static void ConsoleWrite() { Console.WriteLine("測試"); }
-
委託的用途
static FileStream fs; static StreamWriter sw; // 委託聲明 public delegate void printString(string s); // 該方法打印到控制檯 public static void WriteToScreen(string str) { Console.WriteLine("The String is: {0}",str); } // 該方法打印到文件 public static void WriteToFile(string s) { fs=new FileStream(@"D:\Document\test.txt", FileMode.Append,FileAccess.Write); sw=new StreamWriter(fs); sw.WriteLine(s); sw.Flush(); sw.Close(); fs.Close(); } // 該方法把委託做爲參數,並使用它調用方法 public static void sendString(printString ps) { ps("Hello World"); } static void Main(string[] args) { printString ps1 = new printString(WriteToScreen); printString ps2 = new printString(WriteToFile); sendString(ps1); sendString(ps2); Console.ReadKey(); }
-
-
- 指針變量
static unsafe void Test12() { int i = 0; int* p = &i; Console.WriteLine("i的值爲{0},內存地址爲{1}",i,(int)p); Console.WriteLine(); }
- 傳遞指針做爲方法的參數
static unsafe void Main() { int var1 = 10; int var2 = 20; Console.WriteLine("var1:{0},var2:{1}",var1,var2); int* a = &var1; int* b = &var2; Swap(a,b); Console.WriteLine("var1:{0},var2:{1}",var1,var2); Console.ReadLine(); } static unsafe void Swap(int* a,int* b) { int temp =*a; *a=*b; *b=temp; }
- 使用指針訪問數組元素
static unsafe void array() { int[] list = { 10,100,200 }; fixed (int* ptr = list) /* 顯示指針中數組地址 */ for(int i = 0;i<3;i++) { Console.WriteLine("Address of list[{0}]={1}",i,(int)(ptr+i)); Console.WriteLine("Value of list[{0}]={1}",i,*(ptr+i)); } Console.ReadKey();
- 指針變量
-
out參數:一個方法返回多個不一樣類型的參數
static void Main() { string s="asd"; int i=Test7(out s); Console.WriteLine(s); Console.WriteLine(i); Console.ReadLine(); } public static int Test7(out string a) { a="asddddddddddd"; return 1; }
- params參數
static void Main() { Params(213,31231,12312,13231,123,1312,312,312,321,3,12,312,12); } static void Params(params int[] array) { int max = array[0]; for(int i = 0;i<array.Length;i++) { if(array[i]>max) { max=array[i]; } } Console.WriteLine("最大值爲{0}",max); Console.ReadLine(); }
- ref參數
static void Main() { int i = 30; Ref(ref i); Console.WriteLine(i); Console.ReadKey(); } static void Ref(ref int a) { a+=500; }
- 鏈接數據庫
static void MysqlConnection() { //配置鏈接信息 String connstr = "server=localhost;port=3306;user=root;password=123456;database=ztree"; MySqlConnection mySqlConnection = new MySqlConnection(connstr); //打開鏈接 mySqlConnection.Open(); //sql語句 string sql = "select * from city"; MySqlCommand mySqlCommand = new MySqlCommand(sql,mySqlConnection); //執行sql語句 MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader(); while(mySqlDataReader.Read()) { if(mySqlDataReader.HasRows) { Console.WriteLine("id:{0};name:{1};pid:{2}",mySqlDataReader.GetString(0),mySqlDataReader.GetString(1),mySqlDataReader.GetString(2)); } } mySqlConnection.Close(); }