当前位置: 首页 > 知识库问答 >
问题:

C#在codebehind中,如何引用同一命名空间内的另一个类中的公共变量?

东郭子默
2023-03-14

我后面有一个代码,在同一个名称空间中有两个类。我想引用命名空间中第二个类中的第一个类公共变量。我知道我显然可以传递变量,但我想知道是否有方法引用它们。

namespace CADE.results
{
    public partial class benchmark : BasePage
    {
        public string numAnswers = "";   <-- like to reference this from GetScore()

        protected void Page_Load(object sender, EventArgs e)
        {
            BenchmarkAdd bma = new BenchmarkAdd();
            bma.GetScore();
        }
    }


    public class BenchmarkAdd
    {
        public BenchmarkAdd() 
        { 
        }
        public void GetScore() 
        {
            benchmark.numAnswers++;    <-- would like to reference public var here
        }
    }

}

我以为只有Benchmark.Numanswers可以工作,但它不行。是否可以从BenchmarkAdd类引用numAnswers?

共有1个答案

苏浩瀚
2023-03-14

我想引用命名空间中第二个类中的第一个类公共变量

numanswers是一个实例变量,因此getScore()不知道要更新哪个实例。

完成此操作的唯一方法(不传递page实例,或使用ref传递numanswers)是使numanswers静态:

public static string numAnswers = "";

然后可以在getScore()中更新:

public void GetScore() 
{
    CADE.results.benchmark.numAnswers++;
}

但是,将此设置为静态的效果是,每个基准实例不再具有自己的numanswers字段;只有一个属于类型本身的字段副本。

 类似资料: