You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF C# 如何跨类调用变量并向CalcDisplay类传递所需参数

实现方案

最高效的两种实现方式(按需选择)

方案1:方法直接传参(无状态,单次计算首选)

这种方式性能开销最低,调用灵活,不需要给CalcDisplay维护额外状态,适合偶发的单次计算场景。
修改后的CalcDisplay代码:

public class CalcDisplay 
{
   // 所需参数全部作为方法入参,不需要缓存任何实例
   public double CalculateStudyHours(int credits, int weeks, double classHours)
   { 
      return (credits * 10 / weeks) - classHours;
   }          
}

调用示例:

// 从存储的Semester列表中取出需要使用的学期实例
Semester targetSemester = ModuleListHandler.semesterDetails.First();
// 传入对应参数即可
CalcDisplay calc = new CalcDisplay();
double studyHours = calc.CalculateStudyHours(模块学分, targetSemester.Weeks, 每周课时);

方案2:构造函数注入Semester实例(有状态,多轮计算首选)

如果同一个学期需要计算多个模块的学习时长,选择这种方式可以避免重复传递weeks参数,代码更简洁。
修改后的CalcDisplay代码:

public class CalcDisplay 
{
   // 缓存当前关联的学期实例
   private readonly Semester _semester;

   // 初始化时传入绑定的学期实例
   public CalcDisplay(Semester semester)
   {
      _semester = semester;
   }

   // 计算时只需要传入模块专属参数即可
   public double CalculateStudyHours(int credits, double classHours)
   { 
      return (credits * 10 / _semester.Weeks) - classHours;
   }          
}

调用示例:

Semester targetSemester = ModuleListHandler.semesterDetails.First();
CalcDisplay calc = new CalcDisplay(targetSemester);
// 多次计算不同模块的学习时长,无需重复传学期相关参数
double module1Hours = calc.CalculateStudyHours(20, 8);
double module2Hours = calc.CalculateStudyHours(15, 6);

方案选型建议

  • 单次计算场景优先选方案1,实现成本最低,无额外内存开销
  • 同一学期多次计算场景优先选方案2,代码复用性更高

内容的提问来源于stack exchange,提问作者Sebastian Marshall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:06:01