网上找监控变量变化的代码,结果有段代码被人贴来贴去:
public class Program
{
    //需要监控的字段
    private int myValue;    //属性设置,此处调用了事件触发函数
    public bool MyValue
    {
        get { return myValue; }  
//这里报错 Error 3 Cannot implicitly convert type 'int' to 'bool'
// C:\Users\vpoint\documents\visual studio 2010\Projects\拖放窗体\拖放窗体\MainWindow.xaml.cs 252
// 26 拖放窗体        set 
        {
            //如果变量改变则调用事件触发函数
            if (value!=myValue)
            {
                WhenMyValueChange();
            }
            myValue = value; 
        }
    }    //定义的委托
    public delegate void MyValueChanged(object sender, EventArgs e);
    //与委托相关联的事件
    public event MyValueChanged OnMyValueChanged;    //构造函数初始化初值并绑定一个事件处理函数
    public Program()
    {
        myValue = 0;
        OnMyValueChanged += new MyValueChanged(afterMyValueChanged);    }    //事件处理函数,在这里添加变量改变之后的操作
    private void afterMyValueChanged(object sender, EventArgs e)
    {
        //do something
    }    //事件触发函数
    private void WhenMyValueChange()
    {
        if (OnMyValueChanged != null)
        {
            OnMyValueChanged(this, null);
        }
    }
}然后这个地方报错:        get { return myValue; }  
//这里报错 Error 3 Cannot implicitly convert type 'int' to 'bool'
// C:\Users\vpoint\documents\visual studio 2010\Projects\拖放窗体\拖放窗体\MainWindow.xaml.cs 252
// 26 拖放窗体
郁闷死了,完全不知道怎么回事,搜来搜去都是这么一段代码..

解决方案 »

  1.   

     get { return myValue == 0 ? false : true; }  
      

  2.   

    本帖最后由 caozhy 于 2011-07-14 15:34:25 编辑
      

  3.   

       //需要监控的字段
        private int myValue; //这里定义的是整型    //属性设置,此处调用了事件触发函数
        public bool MyValue
        get { return myValue; }  //这里定义的是bool 这样当然存在类型转换的问题了.
      

  4.   

       //需要监控的字段
        private int myValue; //这里定义的是整型    //属性设置,此处调用了事件触发函数
        public bool MyValue
        {
            get { return myValue; }  //这里用的时间是bool   类型不一样当然会存在转换错误了
      

  5.   

    这段号称是可以监控变量的代码根本不能用啊,我按照大家的说法试了,就算它不报错,还是不能监控myvalue的变化啊.. 唉,搜来搜去都是这么一段,以谬传谬...
      

  6.   

    myValue是int类型的myValue的属性 get set 的却是bool类型的
      

  7.   

    LZ,colinfang2006说得很对,这类问题很好查出,是在查不出 ,你可以加try{}catch()语句进行单步调试,一步一步也很快把问题定位到!不能一遇到问题,就问别人,工作习惯不好,别人容易看笑话!纯属个人见解,还请不要介意!
      

  8.   

     //属性设置,此处调用了事件触发函数
        public bool MyValue修改成 //属性设置,此处调用了事件触发函数
        public int MyValue
      

  9.   


        public class Program
        {
            //需要监控的字段
            private bool myValue;        //属性设置,此处调用了事件触发函数
            public bool MyValue
            {
                get { return myValue; }
                //这里报错 Error    3    Cannot implicitly convert type 'int' to 'bool'
                //    C:\Users\vpoint\documents\visual studio 2010\Projects\拖放窗体\拖放窗体\MainWindow.xaml.cs    252
                //    26    拖放窗体            set
                {
                    //如果变量改变则调用事件触发函数
                    if (value != myValue)
                    {
                        WhenMyValueChange();
                    }
                    myValue = value;
                }
            }        //定义的委托
            public delegate void MyValueChanged(object sender, EventArgs e);
            //与委托相关联的事件
            public event MyValueChanged OnMyValueChanged;        //构造函数初始化初值并绑定一个事件处理函数
            public Program()
            {
                myValue = false;
                OnMyValueChanged += new MyValueChanged(afterMyValueChanged);        }        //事件处理函数,在这里添加变量改变之后的操作
            private void afterMyValueChanged(object sender, EventArgs e)
            {
                Console.WriteLine("changed!");
                //do something
            }        //事件触发函数
            private void WhenMyValueChange()
            {
                if (OnMyValueChanged != null)
                {
                    OnMyValueChanged(this, null);
                }
            }
            static void Main()
            {
                Program t = new Program();
                t.MyValue = true;
                t.MyValue = false;
                Console.ReadKey();
            }
        }
    我试了一下,可以用啊。