【问题标题】:Avoiding Public methods in another class?避免在另一个类中使用公共方法?
【发布时间】:2012-11-12 03:29:46
【问题描述】:
我有 2 个表格和 1 个班级。
我把这个类变成了一个静态类。
它有两种带有公共修饰符的方法。
例如:公共字符串 PrintHello()、Public void Task1()
我希望可以从 Form1 和 Form2 访问这些方法。
我知道使用“公共”修饰符不好,所以我查看了“内部”修饰符,它似乎可以完成这项工作。
基本上,我想创建一种安全的方式来访问我的班级。
这样做的最佳方法是什么?您能否提供一个示例来说明如何这样做?
谢谢
【问题讨论】:
标签:
c#
class
access-modifiers
【解决方案1】:
访问修饰符不会为您的代码提供安全性。
是否有人真的想使用您的 privet 方法,他可以使用 ILDASM 反编译您的代码并使用它们,这只是众多示例中的一个。
访问修饰符允许您使用面向对象的代码设计进行编程。
一般来说:
私有修饰符在您的类实现内部,并且您的代码的其他类或层不需要也不想知道那里的存在。
内部修饰符用于提供整个程序集所需的附加功能,但同样,它们对于任何其他(程序集之外)都不是必需的,因为它们是特定于实现的。
最后,公共修饰符用于定义您的类与外部世界的接口,这些方法和属性应该并且将被任何需要您的代码中的某种功能的人使用。
【解决方案2】:
取决于您认为调用此方法的代码可能存在的位置。如果它只会被定义此方法的类调用,那么它应该是私有的。如果您只想从同一个程序集 (dll) 中调用它,但不想从其他 dll 中调用方法,那么您应该将其设为内部。这样,您可以将您的 dll 发送到其他项目,而不必担心支持您的方法(因为他们无法访问您的方法)。
但是,如果您正在做一个通用的库/dll 等,那么这些方法应该是公开的。
这完全取决于你认为谁或什么会调用你的方法。