当前位置:编程学习 > C#/ASP.NET >>

C# 怎么修改静态类中的 静态私有成员的值啊。急。。。


C# 怎么修改静态类中的 静态私有成员的值啊。急。。。
public class A{
     private string str="sss";}
}

public class B{

    public B(){
        //应该怎去修改A类中str的值。
    }
}

--------------------编程问答-------------------- 你这个成员不是静态的私有成员,既然把成员定义为私有的,那么你就不应该从外边去直接修改它,否则你应该把他定义为public,

如果定义为私有,那么应该由A类自己的方法来修改,你可以在A类中定义一个public方法,比如常见的setter方法,去修改str,然后让B类调用A类的public方法来间接的修改str,

其实如果str是私有的,那么B类应该察觉不到str的存在,B类根本不应该知道A类内部有一个str这样的成员,这是oop封装的信息隐藏规则,A类应该把尽可能多的细节隐藏起来,B不应该去试图知道A内部有什么,如何实现这些细节,
--------------------编程问答-------------------- 你这是实例成员 --------------------编程问答-------------------- 你这是实例成员 --------------------编程问答-------------------- public class A{
  private static string str="sss";}
}

public class B{

  public B(){
  //应该怎去修改A类中str的值。
  }
}


是这样的。刚少写了个 static --------------------编程问答-------------------- public class A{
  private static string str="sss";}
}

public class B{

  public B(){
  //应该怎去修改A类中str的值。
  }
}


是这样的。刚少写了个 static --------------------编程问答-------------------- 要改变A类中私有变量的值,不行吧。
静态变量的public访问 A.str直接访问的。私有根本访问不到。

其实你就是要看str值用在什么地方,最简单
  public class A
    {
        public A(string newvalue)
        {
            str = newvalue;
        }
        private static string str;
    }
    public class B
    { 
      public B(){
          A a = new A("aaaa");
      }
    } --------------------编程问答-------------------- 在VS 中调试都能修改到。 那么用反射或者别的办法也一定能改。 就是试过很多种方法了。 都不行 --------------------编程问答-------------------- 既然要让别人可以修改,为啥要设成私有呢 --------------------编程问答-------------------- 既然要让别人可以修改,为啥要设成私有呢 --------------------编程问答-------------------- 以为已经发布后的代码,改不了。只有这样了· --------------------编程问答--------------------
引用 7 楼  的回复:
在VS 中调试都能修改到。 那么用反射或者别的办法也一定能改。 就是试过很多种方法了。 都不行

如果有那个DLL。反射应该可以。 --------------------编程问答-------------------- 私有变量不可修改,换public吧 --------------------编程问答-------------------- 私有变量不可修改,换public吧 --------------------编程问答-------------------- 私有变量不可修改,换public吧 --------------------编程问答-------------------- 路过!不解释,已经解决了差不多。 --------------------编程问答-------------------- 路过!不解释,已经解决了差不多。 --------------------编程问答-------------------- 我用反射 试了改不了,不知道是不用没用对。

就是在发布后的程序,有DLL ,就是改不了 

VS 中调试手动都能修改到

求有经验的帮个忙吧
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,