我有一个单独的类的应用程序,我在代码隐藏文件(在Page_Load中)实例化。在类中有一些我希望能够从代码隐藏文件调用的方法,但由于某种原因它不起作用(SecretNumber.MakeGuess(int)由于它的保护级别而无法访问)。这个课程和方法都是公开的,那可能是什么原因呢?
// Default.asx.cs
...
protected void btnCheckNr_Click(object sender, EventArgs e)
{
if (!Page.IsValid){
return;
}
else{
var guessedNr = int.Parse(inputBox.Text);
var result = SecretNumber.MakeGuess(guessedNr); <- inaccessible due to...
}
}
// SecretNumber.cs
public class SecretNumber {
enum Outcome {
Indefinite,
Low,
High,
Correct,
NoMoreGuesses,
PreviousGuess
};
// Other code goes here...
public Outcome MakeGuess(int guess) {
// Other code here
}
}
答案 0 :(得分:5)
这是因为您的结果枚举是私密的。同样在你的代码中,MakeGuess需要被标记为静态,以便按照你编写的方式使用。
答案 1 :(得分:2)
您正在调用该方法,就好像它是static
一样,但它不是static
方法。你的代码是如何编译的?
澄清一下,这不是可访问性问题的原因,而其他人已经为此发布了解决方案。但是上面提到的方法也是一个明显的问题(除非你在发布代码时没有显示实际上是static
而输入错字)。
答案 2 :(得分:1)
结果需要公开,我无法判断你是否已经初始化了类,在这种情况下,它需要被声明为静态。
答案 3 :(得分:0)
您必须public Static Class SecretNumber
而不是public Class SecretNumber