namespace ConsoleApplication1{
class Program{
static void Main(string [] args ){
ReferenceAndValue.Demonstration(); //呼叫ReferenceAndValue中的Demonstration方法
}
}
public class stamp{ //定義一個類
public string Name{get; set;} //定義參考型別
public int Age{get;set;} //定義值型別
}
public static class ReferenceAndValue{ //定義一個靜態類
public static void Demonstration(){ //定義一個靜態方法
stamp Stamp_1=new stamp{Name=''Premiere",Age=25} //實體化
stamp Stamp_2=new stamp{Name=''Again",Age=47} //實體化
int Age=Stamp_1.Age; //獲取值型別Age的值
Stamp_1.Age=22; //修改值型別的值
stamp guru=Stamp_2; //獲取Stamp_2中的值
Stamp_2.Name="Again Amend";//修改參考的Name值
Console.writeLine("Stamp_1's age:{0}"Stamp_1.Age);//顯示Stamp_1中的Age值
Console.writeLine("age's value:{0}",age);//顯示age的值
Console.writeLine("Stamp_2's name:{0}"Stamp_2.Name)//顯示Stamp_2中的Name的值;
Console.writeLine("guru's name:{0}",guru.Name);
}
}
}
uj5u.com熱心網友回復:
值型別不用new來實體,申明即實體。別外值型別沒有null,如果想要變成可null,則要裝箱成參考物件,或是型別+?的形式。其它的可能還有些性能上的差別,特別一些純資料值類的結構,用值型別可能更好一點。uj5u.com熱心網友回復:
想問啥,代碼看起來沒有錯(除了大小寫)
uj5u.com熱心網友回復:
個人理解,有誤請指正。。也沒多關注這些程式記憶體分為 堆 和 堆疊 ,c#的堆叫托管堆,就是它會幫你回收垃圾
值型別就是存的簡單資料,int float datatime。。。。 變數名和變數值都在堆疊里
參考型別就是變數名和一個指向變數值的資料存在堆疊里,變數值存在堆里
參考型別多個相同變數 使用的是同一個 (堆里的變數值),就是有不同的變數名,但一個指向變數值的資料是相同的
再來個上一句話的舉證
用lock string 哈哈哈 時,會把整個程式中值為 哈哈哈 的string都給鎖了,因為鎖的是通風一個變數值僅供參考參考
uj5u.com熱心網友回復:
說幾個你可以看到的參考型別:基類為Objcet
值型別:System.ValueType
值型別:int、long、float、double、byte、short、decimal、struct 等
參考型別:string、class
值型別變數宣告后,不管是否已經賦值,編譯器為其分配記憶體
參考型別當宣告一個類時,堆疊中分配一個地址。 new 創建一個類的實體時,堆疊存地址、堆存實體
uj5u.com熱心網友回復:
參考:可動態修改值值:不可修改
uj5u.com熱心網友回復:
值型別是不用new而已uj5u.com熱心網友回復:
詳細的說法,那需要首先要有地址、或者指標的經驗,再有一定的堆,堆疊的概念最好。而參考型別:
就是一個指標常量【或者換種描述:一個記錄著某恒地址的值】。沒了
uj5u.com熱心網友回復:
值型別在堆疊里,參考型別在堆里。具體其實百度更方便。
uj5u.com熱心網友回復:
值型別和參考型別不就和商家和代理商家的關系一樣嗎uj5u.com熱心網友回復:
值型別和參考型別不就和商家和代理商家的關系一樣嗎uj5u.com熱心網友回復:
值型別和參考型別不就和商家和代理商家的關系一樣嗎uj5u.com熱心網友回復:
值型別在堆疊里,參考型別在堆里。具體其實百度更方便。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/24454.html
標籤:C#
下一篇:C# 界面
