【问题标题】:Combining methods that are the same but take in different variables组合相同但接受不同变量的方法
【发布时间】:2020-08-30 11:15:51
【问题描述】:

我有一种方法可以输入一个数字并以符号格式返回该数字。我在我的代码中使用了双精度、浮点数和整数,所以我编写了三个相同的方法,只是它们的摄入变量不同。有没有办法只用一种方法就能达到同样的效果?

尝试进一步解释。我想创建一个接受多种变量类型的方法。而不是调用双精度的方法,我希望它接受一个变量,如果它是一个 int、一个浮点数或一个不强制转换的双精度数。现在我有 3 个相同方法的副本,每个都接受不同的变量。由于代码中的其他原因,我不想将我使用的所有变量都更改为双精度数。

有什么方法可以使用一种方法来接受所有三种变量类型,而不是使用 3 种,每种方法只接受一种变量类型。

public string NotationMethod(double x, string y)
{
    if (x > 1000)
    {
        var exponent = Math.Floor(Math.Log10(Math.Abs(x)));
        var mantissa = x / Math.Pow(10, exponent);
        return mantissa.ToString("F2") + "e" + exponent;
    }
    return x.ToString("F0");
}

public string NotationMethod(int x, string y)
{
    if (x > 1000)
    {
        var exponent = Math.Floor(Math.Log10(Math.Abs(x)));
        var mantissa = x / Math.Pow(10, exponent);
        return mantissa.ToString("F2") + "e" + exponent;
    }
    return x.ToString("F0");
}

public string NotationMethod(float x, string y)
{
    if (x > 1000)
    {
        var exponent = Math.Floor(Math.Log10(Math.Abs(x)));
        var mantissa = x / Math.Pow(10, exponent);
        return mantissa.ToString("F2") + "e" + exponent;
    }
    return x.ToString("F0");
}

【问题讨论】:

  • 能否请edit 发帖解释为什么只有double 版本不够?
  • 您好,在我的代码中,我使用的是 int、float 和 double 变量。我不想将所有变量都更改为双精度数,因此我将这三种方法用作全部,以确保在我对它们使用此方法时它们都被接受。我想知道是否有更简洁的编码方式。
  • 我根本没有得到你的评论......你在谈论什么样的变量“将所有变量更改为双精度数”?在任何情况下,请edit帖子而不是添加评论。
  • 你为什么不简单地从其他两个方法中调用方法NotationMethod(double, string)?它将减少代码的重复。所有三种方法都有相同的实现(var 在编译期间被double 替换)。在C# 中不可能创建一个方法来替代这三种方法。

标签: c# variables methods constructor repeat


【解决方案1】:

我注意到您在每种情况下都使用Math.Floor()。我认为您可以简单地使用带有第一个参数Double 数据类型的方法。您只需在调用该方法时将输入转换为Double

【讨论】:

  • 显然我在这里没有得到任何东西。问题和答案都谈到了某种必要的“转换”......
  • 好的,我会记住这一点!有什么方法可以自动执行此操作吗?我只是一直在努力学习更好的方法来使我的代码尽可能简单和干净。
猜你喜欢
  • 2014-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多