求教。。怎么给引用类型所引的那个变量赋值
我从一个事件参数中获得所需要修改的变量 e.a(指向B)
那我怎么修改B的内容?

解决方案 »

  1.   

     你这样定义 ref int b;
    然后试试
      

  2.   

    不能修改事件的定义。。那个是DLL别人已经编好了真悲剧啊。。让我想起了C了。。还是指针方便点。。
      

  3.   

    不理解,你主贴文法有些诡异。你要修改b的属性吗?
    xxx.某某属性=某某值。
      

  4.   


    private void eventDemo(object sender,EventArgs e)
    {
       //e中的a存放一变量(A,B,C等(double类型)根据触发事件的对象不同而不同,e.a为OBJECT类型
       //现在我要修改e.a这个属性所引用的那个变量的值,怎么改?
       //即e.a = B 但我要改B的内容
       //
    }
      

  5.   

    把函数申明写出来让大家看一下,才方便提建议。
    不要怀疑.NET,在语言层面,C能做的.NET都能做。
      

  6.   

    e.a=1;
    e.a=2;
    e.a=3;
    随便你改啊
      

  7.   

    谢谢这位朋友的关注,但是
    首先e.a是只读的。。
    其次就算能改 改的也是e.a的内容。。不是B的内容
      

  8.   

    我来描述下,这个事件首先是对N多的外部变量进行监控,在发生改变的时候引发事件
    在每创建一个监控的时候 我可以添加一个对象(object) 这样在不同的变量发生改变的时候我可以直接修改我自己的对象的值(前面添加的对象) 按照厂商的DEMO 他用了TEXTBOX对象,这样当事件触发的时候直接把参数中对象转换为TEXTBOX对象 然后修改其.text属性从而直接在界面上反映出修改。但是我这里不需要testbox,我需要的是直接改我定义的变量值就可以了,所以添加监控的时候我传的参数是一个double类型的变量。问题就来了,TEXTBOX可以修改属性,但是double只能赋值,问题就是如何赋值。。
    不知道大家能不能看懂?。
      

  9.   


    adsClient.AddDeviceNotificationEx("MAIN.dint1", AdsTransMode.OnChange, 100, 0, tbDint1, typeof(int)) //这个是添加一个监视 tbDint1是TEXTBOX控件,这里不需要为double类型的变量事件的DEMO
    private void adsClient_AdsNotificationEx(object sender, AdsNotificationExEventArgs e)
    {  
    TextBox textBox = (TextBox)e.UserData;
    Type type = e.Value.GetType();
    if(type == typeof(string) || type.IsPrimitive)
    textBox.Text = e.Value.ToString();
    else if(type == typeof(ComplexStruct))
    FillStructControls((ComplexStruct)e.Value);        
    }
      

  10.   

    就是说,原来厂商的方法类似于
    DoAction(Object obj)
    {
        if (obj is TextBox)
            ((TextBox)obj).Text = "";
    }
    结果你现在传了个double进来,想直接(double)obj = value?
    或者其他的Object,想直接obj = value?
    而且还不能把DoAction(Object obj)改成ref?
    要是我理解正确的话。LZ你这个办不到啊。
    你可以这样考虑一下:
    public class Wrapper<T>
    {
        private T _value;
        public T Value
        {
            get; set;
        }
    }
    你的东西传进来之前,就这样包装一下吧,出去再取出来。你要添加double,就是Wrapper<double>,不知道可不可以?