none
vs的重构-重命名不是根据完整命名空间来查询的 RRS feed

  • 问题

  • 刚刚做的、

    showinfo finfo = new showinfo();
      finfo.Show();

      Control contr = null;
      foreach (Control c in finfo.Controls.Find("label1", true))
      { contr = c; }
      //contr.InvokeRequired = true;
      SafeThread safeth = delegate(string info)
      { contr.Text = info; };
      contr.Invoke(safeth, "你是猪呀");

    本来showinfo的实例名为info,由于后面定义delegate参数时重名了

    我把showinfo实例名改为finfo,此时 finfo下面出现一条线 我把鼠标放上去以重命名所有引用

    但重命名后我发现 委托里的contr.Text=info变成了contr.Text=finfo

    很不可思议

    由于刚刚想到 是不是我本身输入的时候他就是Control类型,于是我Ctrl+z回去看了下 VS提示是局部变量string info

    于是我放心的又一次重构

    结果又更改了。。。。。。。。。。。。。

    2009年2月4日 3:08

答案

  • 我知道你设置正确,也知道你的意思。
    VS2008的重构功能就是这样设计的,如果你有两个不同类型的变量同名的话,重构的时候会有提示,如果继续就会两个变量都改变。


    周雪峰
    2009年2月4日 13:22
    版主
  • Visual Studio 设计上的问题在这里很难答复你~最好联系微软的工程师~可以通过客服电话或Connect站点来联系~
    宠辱不惊,看庭前花开花落。 去留无意,望天上云卷云舒。
    2009年2月5日 2:28
    版主

全部回复

  • 你好!
       如果不同类型的变量同名,你修改其中一个变量名的并重构的时候会出现一个警告:
       当前未生成项目或其中一个依赖项,可能未更新引用。
       下面有一个复选框“每次显示此对话框”,你没有显示这个警告可能是你上次没有勾选这个
    复选框。 
    周雪峰
    2009年2月4日 8:26
    版主
  • 这个选项是从第一次见到到现在 一直保留着的

    因为我认为有必要留着这个警告以提示我 让我知道有问题

    2009年2月4日 8:56
  • 知道是这样的就可以了! 
    周雪峰
    2009年2月4日 10:28
    版主
  • 我的意思是哪个复选框一直是选中状态

    也就是说你的情况不存在

    我的设置是正常的

    2009年2月4日 13:15
  • 我知道你设置正确,也知道你的意思。
    VS2008的重构功能就是这样设计的,如果你有两个不同类型的变量同名的话,重构的时候会有提示,如果继续就会两个变量都改变。


    周雪峰
    2009年2月4日 13:22
    版主
  • 我的问题是

    为什么不根据完整命名空间来更改呢?

    2009年2月4日 15:19
  • Visual Studio 设计上的问题在这里很难答复你~最好联系微软的工程师~可以通过客服电话或Connect站点来联系~
    宠辱不惊,看庭前花开花落。 去留无意,望天上云卷云舒。
    2009年2月5日 2:28
    版主
  • 不知道,是VS的BUG还是什么.

    zourinet
    2009年2月5日 3:25