当尝试将整数转换为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
属性中正常工作。