【发布时间】:2017-07-04 06:17:23
【问题描述】:
我知道有很多关于这个错误的问题,但我已经尝试了他们建议的所有方法,但没有任何效果。
首先,我是 C# 新手,这就是为什么我找不到适合自己的解决方案 :(
我的问题:我有这段代码(如果我总结了很多)
public class ClassA {
private static int numA;
public static void MainProcess() {
numA = ClassB.get_numB();
...
}
}
public ClassB {
private static int numB { get; set; }
...
}
现在,它得到错误 'numB.get' cannot explicitly call operator or accessor 。我看到我们应该改写numA = ClassB.numB,但这次我得到了错误:The property or indexer 'ClassB.numB' cannot be used in this context because the get accessor is inaccessible 和'ClassB.numB' is inaccessible due to its protection level。
所以,我唯一尝试过并且有效的方法是更改 public static int numB 中的 numB,但我真的不喜欢它不是私有变量...那么,有解决方案吗?
谢谢!
【问题讨论】:
-
如果您想从课堂外访问它,那么它不是真正的
private,是吗?如果你不希望它是public,那么你可以试试internal。您还可以拥有public getter和private setter -
"但我真的不喜欢它不是私有变量" - 你正试图从不同的类访问它。所以你试图使用它,就好像它是 not 私有的。要么您希望它是私有的,并且您只能在
ClassB的程序文本中访问它,要么您需要将其公开(或内部)。 -
将其修改为私有变量,并创建一个公共属性,只获取/返回该私有变量的值。
-
@Sujith:这是一个自动实现的属性,所以它已经由一个私有字段支持。
标签: c#