none
c#如何用ref变向的调用属性? RRS feed

  • 问题

  • 有以下一个类

    Class ClassA
    {
        string name=String.Empty;
        public string Name
        {
            get{return name;}
            set{this.name=value;}
        }
    }

    有这么一个函数

    public void Add(ref string name)
    {
         for(int i=0;i<10;i++)
         {
              name+="num"+i+"\r\n";
              Thread.Sleep(1000);
         }
    }

    我ClassA(假设已经实现了 INotifyPropertyChanged接口)中的Name属性绑定到了WPF的一个控件上,如果要实时看到Name 的变化,必然要使用Add(ref ClassA.Name),当然这个Name是属性无法使用,我用了一个稍微变通的办法

    public void Add(ref ClassA a)
    {
         for(int i=0;i<10;i++)
         {
              a.Name +="num"+i+"\r\n";
              Thread.Sleep(1000);
         }
    }
    
    ClassA a= new ClassA();
    Add(ref ClassA);

    但是类似这样的情况不少,有些Add函数是封装好的,我就没办法这么变通。

    请问有没有其他办法实现这样的功能?


    2013年2月28日 10:18

答案

  • 不能,你不能用这个方式监控方法内部的运作。如果只是想单纯地设置属性,你可以这么做:

    ClassA classA=new ClassA();

    string nameTmp = classA.Name;

    Add(ref nameTmp);

    classA.Name=nameTmp;

    2013年3月2日 16:01

全部回复