第三十四講 枚舉
如果你想讓一組數字代表特定的意義,並且希望是安全的,可讀性
強。那就用枚舉吧
enum Color
{
Red,
Green,
Blue
}
代碼:
namespace _234 {
//enum Color {Red,Green,Blue }
//enum Color:long { Red, Green, Blue }
enum Color { Red, Green=10, Blue }
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e) {
/*
Color c = Color.Blue;
//Color c = Color.Yellow;
MessageBox.Show(StringFromColor
(c));
//*/
int c1 = (int)Color.Red;
int c2 = (int)Color.Green;
int c3 = (int)Color.Blue;
MessageBox.Show(c1.ToString());
MessageBox.Show(c2.ToString());
MessageBox.Show(c3.ToString());
}
private string StringFromColor(Color color)
{
return color.ToString();
}
}
}
枚舉類型是以自己的方式使用整型;
枚舉類型可以是byte。sbyte。short。ushort。 int uint long
ulong的子類如果沒有指定類型,則預設為int類型。
enum Day:byte{Sun=1,Mon,Tue,Wed,Thu,Fri,Sat}
第二十五講 結構體 struct
通常用來封裝小型相關變數組,例如:點的x,y座標
public struct Point
{
public int X;
public int Y;
}
結構體:沒有方法,只有成員變數的類。
代碼:
namespace _234 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e) {
Book theBook = new Book();
theBook.price = 20;
theBook.title = "C#最好的視頻教程";
theBook.author = "鵬哥";
this.textBox1.Text =
theBook.price.ToString() + "\r\n" + theBook.title + "\r\n"
+ theBook.author;}
}
public struct Book {
public int price;
public string title;
public string author;
}
}
第二十六講 this關鍵字
1.索引
2.this簡單的說,表示所在類。準確的說是代表類的對象
3.其他場合。代表建構函式
public class Person
{
private string name
public Person(string name)
{this.name=name;}
}
在靜態成員中使用this都是不允許的。this代表的都是類的執行個體
而靜態成員只能由類來訪問,不能由對象來訪問
代碼:
namespace _234 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e) {
Person thePerson = new Person("鵬哥
");
this.textBox1.Text = "鵬哥";
}
}
public class Person {
private string name;
public Person(string name) {
this.name = name;
}
}
}
第二十七講 base關鍵字
base:簡單的說,代表直接父類
1.使用base可以訪問父類中的成員
2.代表父類建構函式。
base用於類的繼承場合用的多
2.不能訪問靜態成員和私人(private)的成員
namespace _234 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e) {
//Car theCar = new Car();
//Car theCar = new Car("寶馬");
GaoJiCar theGaoJiCar = new
GaoJiCar();
}
}
}
namespace Traffic {
public class Vehicle {
private string name;
private int speed;
public Vehicle() { }
public Vehicle(string name) {
this.name = name;
}
public Vehicle(string name, int speed) {
this.name = name;
this.speed = speed;
MessageBox.Show("調用了父類中的兩個
參數的建構函式");
}
public void getName() {
MessageBox.Show(this.name);
}
}
public class Car : Vehicle {
public Car() { base.getName(); }
public Car(string name) : base(name, 200) {
}//不是繼承 是先執行 是調用的建構函式
}
public class GaoJiCar : Car {
public GaoJiCar() : base("寶馬") { }
}
}
第二十九講 實值型別
堆棧int i=123;在堆棧中開闢空間 放入實值型別,
託管站:放置所有的參考型別的資料
實值型別: 基礎資料型別 (Elementary Data Type) 枚舉 結構體
int i = 10;
int j = i;
i++;
MessageBox.Show(i.ToString());
MessageBox.Show(j.ToString());
第三十講 參考型別
1.類
2.介面
3.委託
用參考型別的變數給另一個引用型的變數賦值時,只是把引用賦值
給它來了
Person thePerson1=new Person();
Person thePerson2=thePerson1;
namespace _234 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender,
EventArgs e) {
//空間是共用的
MyClass theClass1 = new MyClass();
MyClass theClass2 = theClass1;
theClass2.Value = 123;
MessageBox.Show
(theClass1.Value.ToString());
MessageBox.Show
(theClass2.Value.ToString());
}
}
public class MyClass {
public int Value = 0;
}
}
第三十一講 裝箱和拆箱
裝箱:
實值型別的變數——>參考型別的變數
int i = 123;
object o = i;
把資料從堆棧“裝到”託管堆中
拆箱是一個強制轉換的類型
原因:
學習裝箱,是為了盡量避免裝箱,裝箱是被迫的。
在C#沒有支援泛型之前,為了使某些程式具有通用性,使用了
Object(Object是所有類的根類)所有必須裝箱。(資料結構)
對於已裝箱的對象,因為無法直接調用其指定方法,所有必須先拆
箱,再調用方法,但再次拆箱,會產生新的棧執行個體,而無法修改裝
箱對象。
資源消耗很大