static void Main(string[] args) { //類型 //結構:值類型 //類:引用類型 //聲明的語法:class struct //在類中,構造函數里,既可以給欄位賦值,也可以給屬性賦值。構造函數是可以重載的 //但是,在結構的構造函數當中,必須只能給欄位賦值。 //在結 ...
static void Main(string[] args)
{
//類型
//結構:值類型
//類:引用類型
//聲明的語法:class struct
//在類中,構造函數里,既可以給欄位賦值,也可以給屬性賦值。構造函數是可以重載的
//但是,在結構的構造函數當中,必須只能給欄位賦值。
//在結構的構造函數當中,我們需要給全部的欄位賦值,而不能去選擇的給欄位賦值
//調用:
PersonClass pc = new PersonClass();
//結構是否可以New?
//在棧開闢空間 結構new 調用結構的構造函數
PersonStruct ps = new PersonStruct();
ps.M2();
PersonStruct.M1();
Console.ReadKey();
//結構和類的構造函數:
//相同點:不管是結構還是類,本身都會有一個預設的無參數的構造函數
//不同點:當你在類中寫了一個新的構造函數之後,那個預設的無參數的構造函數都被幹掉了
//但是,在結構當中,如果你寫了一個新的構造函數,那麼個預設的無參數的構造函數依然在。
//
//如果我們只是單純的存儲數據的話,我們推薦使用結構。
//如果我們想要使用面向對象的思想來開發程式,我們推薦使用我們的Class
//結構並不具備面向對象的特征
// int
}
}
public class PersonClass
{
//欄位、屬性、方法、構造函數
}
public struct PersonStruct
{
//欄位、屬性
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
public static void M1()
{
Console.WriteLine("我是結構中的靜態方法");
}
public void M2()
{
Console.WriteLine("我是結構的非靜態方法");
}
public PersonStruct(string name, int age, char gender)
{
//this.Name = name;
//this.Age = age;
//this.Gender = gender;
this._name = name;
this._age = age;
this._gender = gender;
}