C#學習筆記(七)中級 枚舉 結構體 this關鍵字 base關鍵字 實值型別 參考型別 裝箱和拆箱

來源:互聯網
上載者:User

第三十四講 枚舉

如果你想讓一組數字代表特定的意義,並且希望是安全的,可讀性
強。那就用枚舉吧

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是所有類的根類)所有必須裝箱。(資料結構)

對於已裝箱的對象,因為無法直接調用其指定方法,所有必須先拆
箱,再調用方法,但再次拆箱,會產生新的棧執行個體,而無法修改裝
箱對象。

資源消耗很大

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.