我是C#的新手.到目前为止,我曾经创建过每个全局变量 - public static.我的所有方法都是public static,所以我可以从其他类中访问它们.
我在SO上看到,我拥有的公共静态方法越少越好.所以我通过将所有代码放在一个类中来重写我的应用程序 - 表单类.现在我的所有方法都是私有的,并且没有静态方法.
我的问题:我应该怎么做,在表格类中保留所有内容都是我认为的转储.
什么时候我应该使用public,私有和静态私有/公共?
我认为公共方法是一种"缺点",因为它们可以反编译,但我对此表示怀疑.我的公共方法也可以被反编译.私有方法中的"私有"是什么?
编辑:我不是问如何阻止我的程序被反编译,我问我是否应该使用静态,私有和公共.还有:将所有代码放在表单类中是否有问题所以我没有使用公共方法?
Ste*_*ini 14
除非另有证明,否则一切都应该是私密的 公共和私有之间的区别在于应该保持兼容的东西和不应该保持兼容的东西,应该对世界感兴趣的东西以及不应该是它的业务.
当你声明一些公开的东西时,类(以及因此对象)正在发表一个强烈的声明:这是我的可见界面,还有很多其他类似的东西,但这是我的.公共接口是一个合同协议,您的类正在向世界其他地方(无论这意味着)输出它可以做什么.如果修改了公共接口,则可能会违反世界其他地方对该类假设的合同.
另一方面,私人东西是课堂内部的东西.它支持类在承载对象状态(如果它是方法)或保持其内部状态(如果它是变量)时必须用来完成其工作的功能.您可以随意破解和修改类私有的东西,而不会破坏接口契约,这意味着这为您提供了很大的重构自由(内部数据表示,例如效率).私有东西不是界面的一部分.
受保护是涉及重新实现的开放性的东西.如果可以的话,尽量避免深层嵌套的遗产.你冒着使事情变得非常困难的风险,因为你的重新实现类可能会破坏基类.
从技术上讲,类应该声明一个接口(公共)和一个实现(私有).接口根本不应该有代码,只需委托私有"实现"逻辑.这就是为什么在Java和C#中你有接口语句,它在C++中形式化了纯抽象类概念.
静态是逻辑上存在于类的领域中的东西,但不依赖于类本身的状态.当设计模式决定它时,应该谨慎使用它(例如,单件,工厂方法).
private适用于您只希望在正文类中访问的类成员,并且在C#成员中默认设置为private,除非指定不同
何时使用私人的例子:
class Account
{
private int pin = 1090;
public int Pin
{
get { return pin; }
}
}
Run Code Online (Sandbox Code Playgroud)
另一方面,公众则相反,访问公共成员没有任何限制,因此当用户访问时无关紧要的事情应该是公开的.
另一方面静态与二者无关,因为它不处理方法的权限,另一方面静态是常量或类型声明.如果将static一词应用于类,则必须将类中的每个成员声明为static.
何时使用静态的示例:
static int birth_year= 1985
Run Code Online (Sandbox Code Playgroud)
C#Reference中的修饰符将为您提供C#中所有修饰符的更多详细信息以及如何使用它们的示例
小智 5
上面已经回答了所有问题,但我认为它可以简化一点......所以如果其他类将使用这个方法,那么装饰一个公共方法。如果没有 - 将其标记为私有。
例如,您有Class A和Class B。假设A 类有 3 个方法 (x,y,z)。方法X,Y将通过使用B级,所以将它们标记为公共的,但方法ž将仅由法中使用X内部A级所以其标记为私有,因为没有必要将公开此方法外部世界。此方法中的逻辑仅供内部使用。
静态是不同的,这种装饰意味着您不能创建标记为静态的对象的实例。对象是 - 正如关键字所说 -静态的(不能更改或修改)。