1. 程式人生 > 其它 >文字遊戲-小黑屋

文字遊戲-小黑屋

值型別:int double char decimal bool enum struct

引用型別:string 陣列 自定義類 集合 object 介面

值傳遞和引用傳遞

//值傳遞和引用傳遞
int n1=10;
int n2=n1;
n1=20
Console.WriteLine(n1);
Console.WriteLine(n2);
Console.ReadKey();

值型別在複製的時候,傳遞的是這個值的本身

引用型別在複製的時候,傳遞的是對這個物件的引用

就是說傳遞的是堆中的地址,在棧裡顯示的是堆的地址,然後堆中存的才是那個值,在外面操作這個值的時候,跟他共用的那個也會隨著改變

string 的不可變性 每次給string型別的引數賦值時,都會重新開闢空間來進行儲存,這是跟別的引用型別不一樣的地方,其他的引用型別在首次賦值之後,每次賦值都是改變堆中那個地址的值,而string每次都重新開闢新空間。值型別的賦值以及複製,都是對值進行操作,不是地址。

public class Person()
{
    private string _name;
    public string Name
    {
        get(return _name;)
        set(_name=value;)
    }
    
}
class program
{
    static void Main(string[] args)
    {
        Person p1=new Person();
        p1.Name="張三";
        Person p2=p1;
        p2.Name="李四
"; Console.WriteLine(p1.Name); Console.WriteLine(p2.Name); Console.ReadKey(); } }

答案出來應該是兩個李四
static void Main(string[] args)
{
    Person p =new Person;
    p.Name="張三";
    Test(p);
    Console.WriteLine(p.Name);
    Console.ReadKey();

}
public static void Test(Person pp)
{
    Person p
=pp; p.Name="李四"; }
public class Person()
{
    private string _name;
    public string Name
    {
        get(return _name;)
        set(_name=value;)
    }
    
}