我正在尝试一个项目以在内部函数中使用私有值。过去,我只使用公共参数,但是我注意到使用尽可能多的私有参数时,混淆处理效果更好。
我的问题与父母/子女班级有关。
在我的主类中,我定义所有参数如下:
public class MyFatherClass
{
private long id = -1;
public long ID { get { return this.id; } set { this.id = value; } }
...
}
因此,在所有内部函数中,我都使用私有值而不是公共值。
然后在我的子类中,我只添加了特定于子类的参数。
public class MyChildClass : MyFatherClass
{
private long anotherParameter = -1;
public long AnotherParameter { get { return this.anotherParameter; } set { this.anotherParameter = value; } }
...
}
[仅,我看到在我的父类中,我可以毫无问题地访问id
和ID
,但是从子类中,我只能访问ID
(因为id
是私有的。
如果我理解正确,我将需要在我的父级文档中将所有private
替换为protected
,这样可以解决问题吗?我不理解的是,即使我保留了代码,代码仍在工作。为什么我在子类中设置ID
值时却没有错误消息,但执行了句子this.id=value
,但是如果我的子类是私有的,如何从子类中访问它呢?
我现在很犹豫,可以在每个子类中添加private id
,还是可以在父类中将id
设置为protected?
感谢您的解释。
编辑,仅在混淆后添加我的反向代码的屏幕快照,这样您就可以了解混淆私有/公共方法/字段的方式的不同
这里是对[[访问修饰符的作用的简短描述:
Public:itslef类,其子级和任何其他外部类可见和访问字段(变量)和属性(变量封装)以及方法(函数和过程)。
Private
Protected
Internal
id
设置为protected以便在子代中使用它。但是这是规则:
不要重复使用相同名称的成员,否则它将
隐藏
Access Modifiers (C# Reference)
这里有一些读物:
C# Tutorial Level 0C# Tutorial Level 1C# Tutorial Level 2C# Tutorial Level 3
为什么我没有错误消息,当我在子类中设置ID值时,执行了语句this.id=value
,但是如果我的子类是私有的,如何从子类中访问它呢?
MyChildClass
继承的MyFatherClass
类无法访问id
字段因为