C# 什么时候应该使用公共/私有/静态方法?

C# 什么时候应该使用公共/私有/静态方法?,c#,vb.net,C#,Vb.net,我是C#的新手。到目前为止,我习惯于将每个全局变量都设置为public static。我所有的方法都是public static,所以我可以从其他类访问它们 我继续阅读,这样我拥有的公共静态方法越少越好。所以我重写了我的应用程序,把所有的代码放在一个类中——form类。现在我所有的方法都是私有的,没有静态方法 我的问题:我应该怎么做,在我看来,把所有东西都保存在form类中是垃圾 我应该在何时使用public、何时使用private以及何时使用static private/public 我认为公

我是C#的新手。到目前为止,我习惯于将每个全局变量都设置为public static。我所有的方法都是public static,所以我可以从其他类访问它们

我继续阅读,这样我拥有的公共静态方法越少越好。所以我重写了我的应用程序,把所有的代码放在一个类中——form类。现在我所有的方法都是私有的,没有静态方法

我的问题:我应该怎么做,在我看来,把所有东西都保存在form类中是垃圾

我应该在何时使用public、何时使用private以及何时使用static private/public

我认为公共方法是“cons”,因为它们可以反编译,但我对此表示怀疑。我的公共方法也可以反编译。在私有方法中什么是“private”

编辑:我不是在问如何防止我的程序被反编译,我是在问我是否应该使用静态、私有和公共。还有:将所有代码放在form类中是否存在问题,这样我就不必使用公共方法?

请参见。但如果你有一本像样的C#和OOP/OOD书籍就更好了:这些都是计算机科学的基础知识


长话短说:访问修饰符促进了封装,这基本上意味着每个类都应该保持自己的隐私。

这似乎比上面链接的问题更基本。要在OO语言中获得成功,您需要弄清楚如何将最终目标分解为一系列对象,这些对象一起工作(甚至相互包含和扩展)以实现一系列目标。这种抽象有许多好处,一旦您开始正确地实现OO设计,这些好处就显而易见了。如前所述,如果您还没有开始解释面向对象编程的基础知识,那么您将需要一本新的C#书。

私有是针对只希望在主体类内访问的类成员的,在C#中,除非指定不同,否则成员默认设置为私有

何时使用私人密码的示例:

class Account
{

  private int pin = 1090;
  public int Pin
  {
     get { return pin; }
  }
}
另一方面,public是相反的,访问public成员没有限制,因此当与用户有权访问无关的事情应该是public时

另一方面,static与这两者没有关系,因为它不处理对方法的权限,而static是一个常量或类型声明。如果将单词static应用于该类,则该类中的每个成员都必须声明为static

何时使用static的示例:

  static int birth_year= 1985

将为您提供C#中所有修饰符的更多细节,以及它们应如何使用的示例

除非另有证明,否则所有内容都应保密。 公共和私人之间的区别在于什么应该保持兼容,什么不应该保持兼容,什么应该对世界感兴趣,什么不应该是它的业务

当您将某个对象声明为公共时,类(以及相应的对象)正在发出一个强有力的声明:这是我的可见接口,还有许多类似的接口,但这是我的。 公共接口是一个契约协议,您的类将向世界其他地方(无论这意味着什么)导出它可以做什么。如果修改公共接口,就有可能破坏其他人对该类的约定

另一方面,私有内容是类的内部内容。它支持类在携带对象状态(如果是方法)或保持其内部状态(如果是变量)时必须使用的功能。您可以自由地对类私有内容进行任意修改和修补,而不会破坏接口契约,这意味着您可以自由地进行重构(例如,为了提高效率,可以对内部数据表示进行重构)。私有内容不是接口的一部分

受保护是指对重新实施的开放性。如果可以,请避免深度嵌套的继承。您可能会使事情变得非常难以处理,因为您的重新实现类可能会破坏基类

从技术上讲,类应该声明一个接口(public)和一个实现(private)。接口不应该有任何代码,只需委托给私有的“实现”逻辑即可。这就是为什么在爪哇和C语言中有接口语句,它在C++中对纯抽象类概念进行了形式化。
静态是逻辑上驻留在类领域中但不依赖于类本身状态的东西。当设计模式要求它时(例如,单例、工厂方法),应该谨慎使用它

上面已经回答了所有问题,但我认为可以简化一点。。。因此,如果其他类将使用此方法,请装饰一个公共方法。如果没有-将其标记为私有

例如,您有A类B类。假设A类有3种方法(x、y、z)。方法x,y将由B类使用,因此将它们标记为公开,但方法z将仅由x方法在A类使用,因此将其标记为私有,因为无需将此方法暴露于外部世界。此方法中的逻辑仅供内部使用


静态不同此装饰意味着您不能创建标记为静态的对象的实例。正如关键字所说,对象是静态的(不能更改或修改)

Java提供了许多访问修饰符来设置类、变量、方法和构造函数的访问级别。四个访问级别是:

默认情况下,对包可见。不需要修改器

仅对类可见(私有)

对世界可见(公众)

对包和所有子类可见(受保护)

以下是一个例子:

普布利
private int cadence;
private int gear;
private int speed;
private int id;
private static int numberOfBicycles = 0;

public Bicycle(int startCadence, int startSpeed, int startGear){
    gear = startGear;
    cadence = startCadence;
    speed = startSpeed;

   id = ++numberOfBicycles;
}

// new method to return the ID instance variable
public int getID() {
    return id;
}
    ...