C# 将字符串对象强制转换为SqlString时出现异常
在下面的简单c#方法中,我有一个简单的cast问题 当直接从C# 将字符串对象强制转换为SqlString时出现异常,c#,types,casting,C#,Types,Casting,在下面的简单c#方法中,我有一个简单的cast问题 当直接从s(在t1的情况下)进行强制转换时,我没有得到任何错误,但当从o进行强制转换时,我得到异常: 指定的强制转换无效 从object转换到所有类型System.Data.SqlTypes 如何将包含字符串的对象强制转换为SqlString?可以这样做:var x=newsqlstring(“hi-mom”) 或者,如您提供的示例所示: string s = "TestString"; object o = s; SqlString t1
s
(在t1的情况下)进行强制转换时,我没有得到任何错误,但当从o
进行强制转换时,我得到异常:
指定的强制转换无效
从object
转换到所有类型System.Data.SqlTypes
如何将包含字符串的
对象强制转换为SqlString
?可以这样做:var x=newsqlstring(“hi-mom”)
或者,如您提供的示例所示:
string s = "TestString";
object o = s;
SqlString t1 = new SqlString((string)o);
一句忠告:如果你在StackOverflow上发布之前学会使用Intellisense和MSDN文档,你的生活可能会轻松得多。您可以使用文档在大约5秒钟内自己回答这个问题。这是因为存在一个问题
换句话说,您没有处理简单的内置转换:SqlString的设计者决定允许您将字符串转换为SqlString。他们没有为对象执行此操作,因此您看到了错误。其他两个答案都没有解决将对象引用强制转换为SqlString的问题。如果确定对象引用指向字符串,则很简单:
var ss = (SqlString)(string)o;
如果o可能包含字符串以外的值,则可以执行以下操作:
var ss = (SqlString)(o as string);
或者,如果您想继续以字符串格式存储非字符串数据的(危险的)路径:
var ss = o == null ? (SqlString)null : o.ToString();
回答你的问题
private void method1() {
object o = "MyString";
SqlString t1 = o as String
}
如果o不是字符串,t1将为null。dasblinkenlight,您没有回答我的问题!我不知道你的答案是如何获得3张即时选票的!我得承认你把问题说得很清楚!也许这是一个令人遗忘的程序员,或者是微软“按设计”的流行答案@BSarmady我认为,一旦您知道“指定强制转换无效”的原因,就可以轻松地使用if
语句或条件运算符编写解决方案。SynXsiS的解决方案非常优雅,虽然:可能没有带条件的解决方案容易理解,但我非常喜欢。DBM,你在这里再次引用我的问题!我想说的是直接将string
转换为SqlString
存在,但是没有将Object
转换为SqlString
,然后我的问题是如何将Object
转换为SqlString
而不是string
转换为SqlString
!在回答这个问题之前,请仔细阅读这个问题,我想你们的意思是写SqlString ss=(string)o代码>。我相信你的答案是我能得到的最接近的。不幸的是,o
的内容并不总是字符串,有时可以为null,这就是为什么我使用SqlString将null带到调用我的函数的方法中。在大多数情况下,null不等于空字符串(在整数情况下为0)但是那句话本质上和我写的是一样的。然而,据我所知,即使o为null,该语句也应该可以正常工作。如果o可能是一些非字符串、非空值,请参阅(即将编辑的)另一个解决方案的答案。
private void method1() {
object o = "MyString";
SqlString t1 = o as String
}