Char.ToUpper没有大写形式

时间:2016-09-27 16:49:23

标签: c# .net unicode char uppercase

编写转换为/来自camelCase的方法,我有一个想法 - 当使用没有大写形式的Unicode字符的人出现并通过我的函数运行时怎么办?如果有人将已经大写的'A'传递到Char.ToUpper怎么办?我检查了参考源,它只是进入了一个DllImport - 我知道核心的CLR源是可用的,但我并不是非常擅长导航它(在我看来它的组织很差,但也许我只是不理解逻辑)。

将这些内容传递给该函数会发生什么?我知道我可以测试一下,但有没有这样的情况会破坏?是什么抛出异常或导致任何类型的失败或意外行为?我希望函数在任何情况下都能返回原始字符,将它转换为高位无效,但情况如何?

3 个答案:

答案 0 :(得分:4)

这在Char.ToUpper method documentation on MSDN中记录在方法的返回值下:

  

c的大写等价物,或c的未改变的值,如果c已经是大写的,没有大写的等价物,或者不是字母。

所以它不会中断,它只会返回你调用方法的字符,不变。

答案 1 :(得分:2)

根据MSDN它返回:

  

c的大写等价物,如果c是c的未改变的值   已经大写,没有大写等价,或者不是字母。

例如,在“6”上调用ToUpper将返回“6”,因为数字没有大写。

MSDN示例显示了几种不同转换的结果:

using System;

public class Example
{
   public static void Main()
   {
      char[] chars = { 'e', 'E', '6', ',', 'ж', 'ä' };
      foreach (var ch in chars)
          Console.WriteLine("{0} --> {1} {2}", ch, Char.ToUpper(ch),
                            ch == Char.ToUpper(ch) ? "(Same Character)" : "" );
   }
}
// The example displays the following output:
//       e --> E
//       E --> E (Same Character)
//       6 --> 6 (Same Character)
//       , --> , (Same Character)
//       ? --> ?
//       ä --> Ä

答案 2 :(得分:1)

char.ToUpper州的文档:

  

返回值

     

输入:System.Char

     

c的大写等价物,或c的未改变的值,如果c已经是大写的,没有大写的等价物,或者不是字母。