使用类实现勾股定理计算为何返回0?求解决方案
勾股定理类实现返回0的问题排查与解决
问题原因
- 未使用自定义类执行计算逻辑:按钮点击事件里仅定义了初始值为0的局部变量
_Som2,完全没有实例化Pyt类,也没调用类中实现的计算方法,直接输出这个初始值0。 - 类构造函数存在冗余参数:
Pyt类的构造函数声明了_Som和_Som2两个参数,但代码中既未使用这两个参数,也不需要它们参与计算,属于无效定义。 - (可选)命名风格不规范:当前字段和方法的命名(如
_Som、_Som2)易造成混淆,不符合C#常规命名约定,但不影响功能运行。
解决方案
步骤1:修复Pyt类的定义
移除构造函数的冗余参数,同时优化命名提升可读性:
public class Pyt { private double _sideA; private double _sideB; // 仅保留必要的直角边参数 public Pyt(double sideA, double sideB) { _sideA = sideA; _sideB = sideB; } // 计算两条直角边的平方和 public double GetSquareSum() { return _sideA * _sideA + _sideB * _sideB; } // 计算斜边长度 public double GetHypotenuse() { return Math.Sqrt(GetSquareSum()); } }
步骤2:修改按钮点击事件逻辑
实例化Pyt类并调用其计算方法,替换原有的局部变量输出:
private void button1_Click(object sender, EventArgs e) { double side1 = double.Parse(textBox1.Text); double side2 = double.Parse(textBox2.Text); // 实例化勾股定理计算器 Pyt pytCalculator = new Pyt(side1, side2); // 获取计算后的斜边值 double hypotenuse = pytCalculator.GetHypotenuse(); textBox3.Text = hypotenuse.ToString(); }
关键修改说明
- 构造函数仅接收计算所需的两条直角边,确保类初始化时能正确获取计算参数。
- 按钮事件中新增类实例化与方法调用步骤,真正利用自定义类的逻辑完成计算,而非使用初始为0的局部变量。
- 命名优化遵循C#惯例:字段用驼峰式(首字母小写),方法用帕斯卡式(首字母大写),提升代码可读性和维护性。
内容的提问来源于stack exchange,提问作者Stefan N
相关产品推荐
相关产品推荐

