Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 避免在另一个类中使用公共方法?_C#_Class_Access Modifiers - Fatal编程技术网

C# 避免在另一个类中使用公共方法?

C# 避免在另一个类中使用公共方法?,c#,class,access-modifiers,C#,Class,Access Modifiers,我有两张表格和一个班级。 我把这个班变成了一个静态班。 它有两个带有公共修饰符的方法。 例如:公共字符串PrintHello(),公共void Task1() 我希望这些方法可以从Form1和Form2中访问。 我知道使用“Public”修饰符是不好的,所以我已经研究了“Internal”修饰符,它似乎可以完成这项工作 基本上,我想创建一种安全的方式来访问我的类。 这样做的最佳方式是什么?您能否举例说明如何做到这一点 谢谢这取决于您认为调用此方法的代码可能存在的位置。如果只从定义此方法的类调用它

我有两张表格和一个班级。 我把这个班变成了一个静态班。 它有两个带有公共修饰符的方法。 例如:公共字符串PrintHello(),公共void Task1()

我希望这些方法可以从Form1和Form2中访问。 我知道使用“Public”修饰符是不好的,所以我已经研究了“Internal”修饰符,它似乎可以完成这项工作

基本上,我想创建一种安全的方式来访问我的类。 这样做的最佳方式是什么?您能否举例说明如何做到这一点


谢谢

这取决于您认为调用此方法的代码可能存在的位置。如果只从定义此方法的类调用它,那么它应该是私有的。如果只想从同一个程序集(dll)调用它,但不想从其他dll调用方法,那么应该将其设置为内部。通过这种方式,您可以将dll发送到其他项目,而不必担心支持您的方法(因为它们无法访问您的方法)

但是如果你正在做一个通用的libarary/dll等,那么这些方法应该是公共的


这一切都取决于你认为谁或什么将调用你的方法

访问修饰符不会为代码提供安全性。 如果有人真的想使用你的女贞方法,他可以使用ILDASM去编译你的代码并使用它们,这只是众多方法中的一个例子

访问修饰符允许您使用面向对象的代码设计进行编程。 一般来说: 私有修饰符是类实现的内部修饰符,其他类或代码层不需要也不想知道它们的存在

内部修饰符用于提供整个程序集所需的附加功能,但其他任何程序集(程序集外部)都不需要内部修饰符,因为它们是特定于实现的

最后,公共修饰符用于定义类与外部世界的接口,这些方法和属性应该也将被任何需要代码中某些功能的人使用。

定义“安全”。保护什么?