【问题标题】:Unsure why it states "No overload for method takes 0 arguments"不确定为什么它说“方法没有重载需要 0 个参数”
【发布时间】:2015-04-30 19:28:09
【问题描述】:

我应该接受用户的输入并将其重新打印成备用大写字母。我将字符串转换为 char 数组,并尝试使用数组中剩余的位置来实现。

有问题的行是 y = letter.ToUpper() 和 y = letter.ToLower() 行,这给了我错误“方法 'ToUpper'/'ToLower' 没有重载需要 0 个参数。我不确定为什么即使在查看其他人的示例后我也会收到错误消息。

static void Main(string[] args)
    {
        Console.Write("Enter anything: ");
        String x = Console.ReadLine();
        char[] array = x.ToCharArray();

        for(int i = 0; i<array.Length; i++)
        {
            char letter = array[i];
            char y;
            if(i % 2 == 0)
            {
                y = letter.ToUpper();
                Console.Write(y);
            }
            else if(i % 2 == 1)
            {
                y = letter.ToLower();
                Console.Write(y);
            }                
        }
    }

【问题讨论】:

  • 只是一个旁注。无需将字符串转换为数组。您也可以使用索引访问它的单个字母 for(int i = 0; i&lt;x.Length; i++) { x[i] ...`

标签: c# arguments overloading


【解决方案1】:

string 不同,char 没有ToUpper()ToLower() 实例方法。

它确实有带有这些名称的静态方法,这就是为什么您会收到一条令人困惑的错误消息。

使用char.ToLower(y)

【讨论】:

    【解决方案2】:

    您正在调用char.ToLower - 这是一个静态 方法,接受相关字符作为参数,以及可选的CultureInfo

    所以你可能想要:

    y = char.ToUpper(letter);
    

    y = char.ToLower(letter);
    

    请注意,如果您使用条件运算符,您的循环会简单得多:

    for(int i = 0; i < array.Length; i++)
    {
        char letter = array[i];
        char y = i % 2 == 0 ? char.ToUpper(letter) : char.ToLower(letter);
        Console.Write(y);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      相关资源
      最近更新 更多