再次理解按值和按引用传递类型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    
class Program
    
{
       
public class Person
        
{
            
public string fullname;
            
public int age;
            
public Person(string n, int a)
            
{
                fullname 
= n;
                age 
= a;
            }

            
public Person() { }
            
public void PrintInfo()
            
{
                Console.WriteLine(fullname 
+ age);
            }

        }

        
public static void SendAPersonByValue(Person p)

        
{
            p.age
=99;
            p
=new Person("wikii",99);
            p.PrintInfo();
        }

        
static void Main(string[] args)
        
{
            Person Fred 
= new Person("fred"12);
            Fred.PrintInfo();
            SendAPersonByValue(Fred);
            Fred.PrintInfo();
            Console.Read();

        }

    }

}

输出的结果,以前我注意过,不过现在又忘了,结果自己的结果出了问题,这个是个很简单的问题,如果用

 

按引用

 

结果是不同的。

区别:按值传递类型复制了指向调用者对象的引用,SendAPersonByValue()方法与调用者指向同一个对象,所以可以改变对象状态数据,但是无法指向一个新的对象,和常量指针类似。

理解了还是挺简单的ref这个关键字也在许多地方多用用。

posted @ 2009-04-19 15:51  newos  阅读(186)  评论(0编辑  收藏  举报