无法将类型为“ System.Int32”的对象转换为类型为“ System.Char”的对象

时间:2019-11-30 18:58:44

标签: c#

当尝试将整数转换为char时,我得到了这个信息:

  

无法将类型为“ System.Int32”的对象转换为类型为“ System.Char”

但是,如果我尝试使用Convert.ToChar,它就可以正常工作。可以在这样的测试中重现此错误:

[Theory]
[MemberData(nameof(AsciiChars))]
public void Broken_Test(params object[] data)
{
      var character = (char)data[0];
      /* The rest of the test */
}

public static IEnumerable<object[]> AsciiChars
{
      get
      {
            var charPattern = new Regex("[a-zA-Z]", RegexOptions.Singleline);

            for (var i = 33; i < 127; i++)
            {
                  if (charPattern.IsMatch(((char)i).ToString()) || (char)i == '_')
                        continue;

                  yield return new object[] {i};
            }
      }
}

我不知所措,可能是什么原因?因为强制转换显然可以在AsciiChars属性中正常工作。

0 个答案:

没有答案