使用C#类实现毕达哥拉斯定理时遇方法组转double错误求助
问题解决:方法调用缺少括号导致的类型转换错误
你的错误根源很明确:_Som是一个方法,不是字段或变量。在C#中,调用方法必须加上括号()来执行它并获取返回值,直接写方法名会被编译器识别为「方法组」,而Math.Sqrt()需要的是double类型参数,因此会抛出类型转换错误。
修正后的代码
public class Pyt { private double _Rh1; private double _Rh2; public Pyt(double rh1, double rh2) { _Rh1 = rh1; _Rh2 = rh2; } public double _Som() { return _Rh1 * _Rh1 + _Rh2 * _Rh2; } public double _Som2() { // 给_Som加上括号,执行方法获取返回值 return Math.Sqrt(_Som()); } }
额外优化建议(可选)
按照C#命名规范,方法名通常使用帕斯卡命名法(PascalCase),下划线开头一般用于私有字段,建议把方法名修改得更具语义化,提升代码可读性:
public class Pyt { private double _sideA; private double _sideB; public Pyt(double sideA, double sideB) { _sideA = sideA; _sideB = sideB; } public double CalculateSumOfSquares() { return _sideA * _sideA + _sideB * _sideB; } public double CalculateHypotenuse() { return Math.Sqrt(CalculateSumOfSquares()); } }
内容的提问来源于stack exchange,提问作者Stefan N
相关产品推荐
相关产品推荐

