【问题标题】:Is it possible to change the parameters that a predefined method can take in C#?是否可以更改 C# 中预定义方法可以采用的参数?
【发布时间】:2017-03-21 04:27:05
【问题描述】:

我不确定这是否可能。我使用了一种采用参数 int 的方法,但我发现自己处于需要能够使用浮点值的情况。有谁知道是否可以更改预定义方法可以采用的参数?

谢谢大家 最好的 亚历克斯

【问题讨论】:

  • 你试过重载方法吗?
  • 只需使用 (int) 将其转换为 int,或者在其周围编写自己的包装器,接收浮点数,并在内部转换为 int。
  • 谢谢大家!我今天学到了很多。万事如意

标签: c# methods parameters casting


【解决方案1】:

你可以像下面这样重载一个方法:

public static float myMethod(float sumNumber)
{ 
      // whatever you need for code here
      return sumNumber;
}

public static int myMethod(int sumNumber)
{ 
     // whatever you need for code here
     return sumNumber;
}

【讨论】:

  • 这两个方法不应该有相同的返回类型吗?
  • @Jules 我不确定我是否遵循我们返回 float 或 int 的任何一种方式,我只是没有在计算中添加任何逻辑。
  • @Jules 没有要求他们必须这样做。
  • 非常感谢,这真的很有帮助!当我得到 15 的代表时,我会给你们所有人投票。最佳亚历克斯
【解决方案2】:

C# 具有针对他的需求类型的泛型,您希望在其中应用与参数输入类型无关的逻辑

例如:

T foo<T>(T param)
{
    return param + 1;
}

//and it can be used  like this 

int i;
foo<int>(i); // return type is int

float f;
foo<float>(f); // return type is float

【讨论】:

  • 非常感谢,这真的很有帮助!当我得到 15 的代表时,我会给你们所有人投票。最佳亚历克斯
【解决方案3】:

成员重载是指在同一类型上创建两个或多个成员,它们仅在参数的数量或类型上有所不同,但具有相同的名称。 - Microsoft MSDN

// your method
public static double Inc(int i)
{
     return i + 1;
}

// your method (overloaded)
public static double Inc(double d)
{
    return d + 1;
}

int i = Inc(3);
double d = Inc(2.0); // You can use the same method with different parameter types

www.dotnetperls.com 网站有很多很好的例子。如果你想看MSDN以外的其他解释,可以阅读this

【讨论】:

  • 非常感谢,这真的很有帮助!当我得到 15 的代表时,我会给你们所有人投票。最佳亚历克斯
【解决方案4】:

您可以为此类方法定义一个泛型类。

public class GenericMethodsClass<T>
{
    public static T myMethod(T sumNumber)
    {
        // whatever you need for code here
        return sumNumber;
    }
}

调用:

GenericMethodsClass<int>.myMethod(1);
GenericMethodsClass<double>.myMethod(1.2);

【讨论】:

  • 非常感谢,这真的很有帮助!当我得到 15 的代表时,我会给你们所有人投票。最佳亚历克斯
  • 现在你可以做到了
猜你喜欢
  • 2012-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多