C#类文件中函数返回的全局变量数值,如何在另一个类文件中使用

全局变量在计算后无法在其它类文件中保持其值?

这个问题很难描述, 

总之,是在B.cs定义多个全局变量N,M,E,定义多个函数,每个函数计算一个全局变量的结果并return该全局变量。下一个函数计算时需要用到上一个函数计算出的全局变量的值。也就是不断用之前的计算结果进行计算。最后一个函数计算E的值。

但在A.cs窗体文件中只调用B.cs文件中的最后一个函数时,E运行结果出现错误。

在检查错误时,通过在B.cs最后一个函数中写入代码: 

MessageBox.Show("N: " + N.ToString());

MessageBox.Show("M: " + M.ToString());

再次运行程序

发现N和M的结果均为0。

觉得时全局变量无法在同一类文件另一个函数中保持值,或者无法在另一个类文件中保持值,但经过查阅资料后,发现全局变量可以在同一类文件保持值。

解决方法

需要在A.cs中调用运算N和M的函数,

 A.CalculateN(processedLines);

A.CalculateM(processedLines, this);

 double E = A.CalculateE(processedLines);

这样的话,M,N的值才可以正常正确显示,而不是默认为0;

E才可以在A.cs中正常计算。

同理若想正确计算出M的值也必须在A.cs中加上A.CalculateN(processedLines);否则N的数值默认为0;

我的理解是B.cs中定义的全局变量N,M无法在A.cs中使用,需要在A.cs中调用相关函数后,M,N的数值才可以在CalculateE函数中运用。

也就是如果不调用CalculateN,CalculateM只调用CalculateE的话,CalculateN,CalculateM两个函数只是在B.cs里面躺着,并没有实际运用,也就不存在计算N,M的值了。

可是CalculateE用了N,M的值,为何在A.cs里调用时,无法自动运行与之相关的CalculateN,CalculateM两个函数?感觉自己还是不太清楚其内在的运行机理。😓

希望有明白的大佬可以帮忙解答一下🌹

关于全局变量的一点介绍

要确保一个变量在执行完函数后仍然保持其值,需要将这个变量定义在函数外部,也就是作为一个类的成员变量或者全局变量。

全局变量通常指的是定义在函数外部,作用域为整个程序集的静态变量。

实际编程中,过度使用全局变量可能会导致代码难以理解和维护,因此更好的做法是将变量定义在合适的类中作为成员变量。

也就是:(在B.cs中)

   public class B
   {

 // 定义类的成员变量N,M
    private double N;  

    private double M;

}

N和M被定义为一个私有成员变量(使用private修饰符),这意味着它只能在A类的内部被访问。

CalculateN函数中,计算出的N值被赋给了这个成员变量,因此即使函数执行完毕后,N和M的值仍然会保留在类的实例中。在A类的实例的整个生命周期内都存在,并且可以在类的任何方法中使用。

在上面A.cs的代码示例中,补充:

// 创建A类的实例  
  A calculations = new A();  

 A.CalculateN(processedLines);

A.CalculateM(processedLines, this);

// 此时,即使CalculateN函数和CalculateM函数已经执行完毕,  
 // calculations对象的N,M成员变量仍然保留着计算出的值  

 double E = A.CalculateE(processedLines);

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值