重载方法不使用双输入

时间:2017-06-10 14:58:08

标签: c# overloading

我正在尝试创建控制台应用以了解方法重载。 我有像这样的类库

namespace GetStringName
{
    public class GetString
    {
        public void Player(double num)
        {
            double number = num * 2;
            Console.Write(number);
        }
        public void  Player(string name)
        {
            char[] charr = name.ToCharArray();
            Array.Reverse(charr);
            Console.Write(charr);
        }   
    }
}

我的控制台应用程序如下所示

using GetStringName;
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            GetString y = new GetString();
            y.Player(Console.ReadLine());           
            Console.ReadLine();
        }
    }
}

无论我输入什么(字符串或整数),它总是会恢复字符串。 你能告诉我我做错了什么吗?

3 个答案:

答案 0 :(得分:3)

这是因为Console.ReadLine()方法返回字符串。如果您TryParse输入了double,则会调用double的方法,否则会调用string的方法。例如:

static void Main(string[] args) {
    GetString y = new GetString();
    string input = Console.ReadLine();
    double doubleInput;

    if(double.TryParse(input, out doubleInput)) {
        y.Player(doubleInput);
    } else {
        y.Player(input);
    }
}

答案 1 :(得分:0)

无论您输入什么内容,Console.ReadLine()都将始终返回一个字符串。要将输入解析为double,您需要使用double.Parse或double.TryParse。

示例:

double input;
bool success = double.TryParse(Console.ReadLine(), out input);
if(success)
{
    y.Player(input);
}

或者

try
{
     y.Player(double.Parse(Console.ReadLine()));
}
catch(FormatException)
{
     //Input is not a double
}
catch(OverflowException)
{ 
     //Input is out of bounds for a double type 
}

TryParse将返回一个bool,指示解析是否成功,而Parse将在输入无效时抛出异常。

一般情况下,我总是喜欢TryParse,除非您特别想让用户知道他们的输入无效的原因。

答案 2 :(得分:-1)

您需要提供double作为方法的参数 试试这个

function findVowels(str) {
  return (str.match(/[aeiou]/ig)||[]);
}

findVowels('abracadabra'); // 'aaaaa'