You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现用户输入首字母大写输出报错:ToUpper无0参数重载

解决首字母大写转换的错误问题

错误原因

你遇到的No overload for method 'ToUpper' takes 0 arguments错误,是因为你调用的是char类型的实例方法ToUpper(),这个方法需要传入一个CultureInfo参数来指定区域规则。而你想要的无参数大写转换,应该使用Char类的静态方法ToUpper(char)。

修正后的代码

static void Introduce()
{
    Console.Write("Hi! What is your first name? ");
    string fn = Console.ReadLine() ?? string.Empty; // 处理空输入情况

    Console.Write("Hi! What is your last name? ");
    string ln = Console.ReadLine() ?? string.Empty;

    // 使用Char类的静态ToUpper方法转换首字母
    string firstNameInitial = fn.Length > 0 ? Char.ToUpper(fn[0]).ToString() : string.Empty;
    string lastNameInitial = ln.Length > 0 ? Char.ToUpper(ln[0]).ToString() : string.Empty;

    string name = $"{firstNameInitial} {lastNameInitial}".Trim(); // 去除多余空格

    Console.WriteLine(name);
}

关键改进点

  • 替换fn[0].ToUpper()为Char.ToUpper(fn[0]):静态方法无需额外参数,直接实现单个字符的大写转换。
  • 处理空输入:添加?? string.Empty和长度判断,避免用户未输入内容时触发IndexOutOfRangeException。
  • 使用字符串插值和Trim():让输出格式更整洁,避免两边出现多余空格。

额外优化(若需完整姓名首字母大写)

如果你想要的是完整姓名的首字母大写(比如"john"转"John"),可以用更简洁的封装方法:

static string CapitalizeFirstLetter(string input)
{
    if (string.IsNullOrEmpty(input)) return input;
    return Char.ToUpper(input[0]) + input.Substring(1).ToLower();
}

// 在Introduce方法中调用:
string formattedFirstName = CapitalizeFirstLetter(fn);
string formattedLastName = CapitalizeFirstLetter(ln);
string fullName = $"{formattedFirstName} {formattedLastName}";

内容的提问来源于stack exchange,提问作者zveuse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:00:07