c#字符串值類型與引用類型比較示例
classProgram
{
staticvoid Main()
{
int a = 9; //給變量a賦值為9
int b = a; //將a的副本給變量b
b = 10;
Console.WriteLine(string.Format("a={0},b={1}", a, b));
Person ZS = newPerson(); //張三
ZS.Age = 99; //張三的年齡是99
Person SM = ZS; //三毛等于張三,即張三和三毛就是同一個人
SM.Age = 100; //三毛年齡變成100,張三也就變成了100
Console.WriteLine(string.Format("A={0},B={1}", ZS.Age, SM.Age));
Console.ReadKey();
}
}
classPerson
{
publicint Age { get; set; }
}
相同的結(jié)構(gòu),不同的結(jié)果。
證明string是引用類型
using System;
classProgram
{
staticvoid Main()
{
int n = 99;
Console.WriteLine("Before:n={0}", n.GetHashCode());
//此時(shí)獲取到的哈希碼值就是n的變量值
GetInt(n);
string s = "Hello";
Console.WriteLine("Before:s={0}", s.GetHashCode());
GetString(s);
Console.ReadKey();
}
staticint GetInt(int n)
{
Console.WriteLine("After:m={0}", n.GetHashCode());
//傳過來的是變量值,說明這是值傳遞
return n;
}
staticstring GetString(string s)
{
Console.WriteLine("After:s={0}", s.GetHashCode());
//傳過來的是地址而不"Hello",說明這時(shí)引用傳遞
return s;
}
}
相關(guān)文章
C#線程 BeginInvoke和EndInvoke使用方法
本文開始C#線程系列講座之一,即BeginInvoke和EndInvoke的使用方法,需要的朋友可以參考下2013-05-05C#調(diào)用和實(shí)現(xiàn)WebService,純手工打造!
C#調(diào)用和實(shí)現(xiàn)WebService,純手工打造! 需要的朋友可以參考一下2013-02-02c# winform treelistview的使用(treegridview)實(shí)例詳解
這篇文章主要介紹了c# winform treelistview的使用(treegridview),本文通過實(shí)例代碼給大家詳細(xì)介紹,需要的朋友可以參考下2017-12-12.NET中保證線程安全的高級方法Interlocked類使用介紹
這篇文章主要介紹了.NET中保證線程安全的高級方法Interlocked類使用介紹,Interlocked類可以為為多個線程共享的變量提供原子操作,需要的朋友可以參考下2014-07-07