SqlXml s = new SqlXml(new MemoryStream(new UnicodeEncoding().GetBytes("asd")));
但为什么它没有给我任何例外......为什么?
如果我尝试:
SqlXml s = new SqlXml(new MemoryStream(new UnicodeEncoding().GetBytes("asd")));
String g=s.Value;
我对值赋值有异常。 哪里错了?
提前谢谢!
答案 0 :(得分:1)
因为简单地调用构造函数不会对此类型的流做任何操作(请参阅code)。只有你做某事"对于实例,它实际上会尝试读取数据/流,并按顺序抛出异常。
Value - 属性就是一个会导致传递的流被实际读取的东西。还有其他人,请查看documentation。
因此,如果您真的想使用此类来检查流是否包含有效的XML,那么就像您已经这样做一样。调用SqlXml.Value
属性(并且可能将其分配给字符串以进行测量,即使您不使用它)。如果抛出,则XML无效 - 就像您已经观察到的那样。