多行字符串作为XML

时间:2015-10-26 23:28:20

标签: vb.net visual-studio

我看到人们在pre-vs2015中为编写多行字符串而得到了这个技巧。这里有问题和好的答案。我的问题不是这是否可能,而是它的含义是什么?

人们

Dim s As String = 
<a>
    SELECT f1, f2, f3
    FROM t1
    WHERE f4 = 10
</a>.Value

可读也好。没有特殊处理,它没有回车的能力。但我怀疑,这是在运行时的额外处理以及字符串实习?

1 个答案:

答案 0 :(得分:2)

当然有一个开销,但我认为不是那么多:

有一个ctor调用XElement与它关联的XName(通过字符串的隐式转换),它的唯一内容是文本(字符串作为对象)。 从reference source中我所看到的来看,ctor本身似乎也做得不多;首先针对XNode测试内容类型,然后是字符串,只需将内部内容字段设置为字符串。

价值属性显然与原则相同。

该字符串似乎也被实现了,因为在整个事件上调用String.IsInterned会返回字符串而不是null。

通过表达式评估,XElement不再使用,因此它可以直接用于GC的收集(可能在gen0中被释放)。

总而言之,除非性能至关重要,否则我更不用说真正担心(但只有真正的分析才能判断开销是来自那个还是其他地方)。