復制代碼 代碼如下:
class Program
{
static void Main(string[] args)
{
TestClass objA = new TestClass();
objA.Name = "I am ObjA";
Console.WriteLine(String.Format("In Main:{0}", objA.Name));
TestFun(objA);
Console.WriteLine(String.Format("In Main:{0}", objA.Name));
Console.Read();
}
static void TestFun(TestClass obj)
{
obj.Name = "I am be modified in TestFun";
Console.WriteLine(String.Format("In TestFun:{0}", obj.Name));
}
public class TestClass
{
public string Name { get; set; }
}
}
復制代碼 代碼如下:
class Program
{
static void Main(string[] args)
{
TestClass objA = new TestClass();
objA.Name = "I am ObjA";
Console.WriteLine(String.Format("In Main:{0}", objA.Name));
TestFun(objA);
Console.WriteLine(String.Format("In Main:{0}", objA.Name));
Console.Read();
}
static void TestFun(TestClass obj)
{
TestClass objB = new TestClass();
obj = objB;
obj.Name = "I am ObjB";
Console.WriteLine(String.Format("In TestFun:{0}", obj.Name));
}
public class TestClass
{
public string Name { get; set; }
}
}
所以執行完TestFun函數后,Main函數中objA仍舊指向原來的objA對象,故運行結果如下:
注:本文中的內存模型僅是個人猜測,肯定有不正確或者不嚴謹的地方,希望不要誤導大家,也歡迎指正。
新聞熱點
疑難解答
圖片精選