我在表格中有一个char类型列。我想将它转换为C#中的char。 它正在通过
工作char gender = Convert.ToChar(dataRow["Gender"]);
但它失败了
char gender = (char)(dataRow["Gender"]);
如果列是int类型。我可以使用(int)来转换对象。 为什么它在char(异常)上失败?
InvalidCastException的。
谢谢,
答案 0 :(得分:3)
datarow[column]
是'object'
Convert.ToChar()
方法有一个以对象作为参数的重载,因此编译器知道该怎么做。
(char)dataRow[column]
是dataRow[column]
对char类型的显式转换,但是从对象到char的自动转换不存在
答案 1 :(得分:1)
Convert.ToChar
读取文本值“A”并将其转换为值为“A”的字符对象。
Casting假定原始值是一个字符对象。错误告诉你它不是。
答案 2 :(得分:1)
显然dataRow["Gender"])
包含int
值。这意味着它是一个“盒装”int(一个'int'存储为一个对象)。你只能把它转换为“真正的”int,你不能直接把它转换成其他东西,比如char
。
然而,您可以使用两步法:
char gender = (char)(int)dataRow["Gender"];
int
转换成真正的char
。答案 3 :(得分:0)
大多数概率单元格中的真实值类型为object
。
在此案例中,您将获得InvalidCastException
。
Convert.ToChar会导致存在接受object
类型的重载。
答案 4 :(得分:0)
如果dataRow["Gender"]
实际上是(强类型)字符串,则可以使用
char g = dataRow["Gender"][0];
获取该字符串的第0个字符(如果字符串为null
或为空,则会失败)。另一方面,如果dataRow["Gender"]
是字符串但输入为System.Object
,则可以使用
char g = ((string)dataRow["Gender"])[0];