返回目錄:目錄請戳這里~
- C#數組
基本概念不提。。
int[] a;
bool[] b = new bool[10];
float[] c = {0.5, 57.0, 233.3, 12345.67 };
double[] d = new double[/*3*/]{233.33, 1926.0817, 4396.0 };
然后數組和指針有很大的不同。。。
Array類不會用……
有多維數組和交錯數組。。。
//多維數組
int[ , ] a = new int [2,3] {{0, 1, 2 },{3, 4, 5 }
};
int val = a[1,2];
//交錯數組
int[][] a = new int[][]{new int[] {3, 4, 5 }, new int[]{ 0, 1, 2 };
int val = a[1][2];
= =
1. C#的字符串有Format(喜大普奔),不過格式化字符串是C#的用著略有不慣= = 然后里面封裝了大量的方法= =看不過來,有空會細看的。。
-
struct(值類型)
很像C++。。但是。。。- 不能定義析構函數和默認的構造函數
- 不能繼承或被繼承
- 成員不能是abstract virtual 或 protected (畢竟不能被繼承)
- 不使用new即可被實例化,此時所有的字段都要被初始化。。
-
enum(值類型):和C++一樣。水過了下一個。
-
class(引用類型) //下面就很OO了哦
- 類的默認訪問標識符是internal,成員的是private
- 用法基本和C++沒差= =所以就這樣咯= =
-
繼承&&多態
這個地方挺不好懂的(可能是我太弱了)= =
其實主要原因是因為學C++的時候就不怎么學這些東西(OI根本不考什么OO,你看里面有幾個不抖機靈的時候用class的)
不理解的話呢,建議各位打開自己的IDE實戰一下,亂改改代碼找找差異,這樣對每部分代碼是干什么的理解會更清楚一些= =
然后再扯一句VS對C#的補全非常的完備(畢竟MS一直推C#嘛),很多時候可以讓VS幫你完成很多操作,順便就可以理解一些語句的作用了~~
看代碼比理解概念清晰多了~
繼承的形式很簡單:
class Parent
{...
}class Child:Parent
{...
}
基類的初始化
class Parent{protected int a, b;public Parent(int x,int y){a = x;b = y;}}class Child : Parent{public Child(int p, int q) : base(p, q){}}
C#不支持多重繼承~但想實現多重繼承的話可以通過接口(interface)(這個還沒學,以后再說)
然后就是多態(不是什么多肽更不是什么墮胎= =)
(話說你們輸入法打“duotai”會出什么啊?)
繼承學C++的時候都用的少,多態什么的就更不懂了QAQ以前寫個項目的時候析構函數前面寫個virtual但不知道干啥用的啊~好在現在理解了_ (:з」∠) _
所以基本全靠自己體會(我就是自己打了打代碼理解的)
C#的多態性分為兩種:
- 靜態多態性
靜態多態性有兩種技術來實現:函數重載和運算符重載(這個我會啊2333就不說了)
- 動態多態性
動態多態性啊,開始的時候挺費解的。
分開說,先說abstract
abstract本義是“抽象的”,這樣我們用這個關鍵字就可以創建抽象類,里面包含了抽象方法。。
代碼:
abstract class Parent
{public abstract void add();//抽象類里定義的抽象方法,無需主體,只需要一個聲明,如何實現交給派生類做就好了
}class Child : Parent
{private int a, b;public Child(){a = 1;b = 2;}public override void add(){Console.WriteLine(a + b);} //抽象方法,用override關鍵字重寫 就實現了這個add()方法的功能
}
然后再說virtual..
//這次是完整的程序了
using System;namespace HelloWorld
{class Parent{protected int a, b;public Parent(int x,int y){a = x;b = y;}public virtual void add() //虛方法{Console.WriteLine("Parent:{0}", a + b);}}class Child : Parent{public Child(int p,int q) : base(p, q){}public override void add() //使用override關鍵字重寫了虛方法{Console.WriteLine("Child:{0}", a + b);}}class Child2 : Parent{//本類中并沒有重寫add()方法public Child2(int p,int q) : base(p, q){}}class MainProcess{public static void Main(){Child ch = new Child(3,4);Child2 ch2 = new Child2(5, 6);ch.add();ch2.add();}}
}
編譯、運行以上程序,可得結果:
Child:7
Parent:11
說明調用標有virtual方法時,先檢查有無重寫,有則按重寫執行,否則繼續往上找,直到找不到重寫則按virtual進行= =
差不多就是這樣。。。
本篇中需要回顧的:
1. Array類
2. C#字符串的方法們
3. 繼承和多態還要加強理解= =
還是要繼續加油啊~~
?