首页 > 代码库 > 让C#眼红的VB.NET属性

让C#眼红的VB.NET属性

 

什么是XML Literal呢?
"XML Literal"是在VB.NET 9.0引入的一个用于构建XML对象的新特性。VB.net有了如此神器,现在轮到C#程序员羡慕了。当然这篇文章不是说如何使用XML Literal的,关于这个新特性的更多信息可以参考MSDN:
http://msdn.microsoft.com/en-us/library/bb384629.aspx


有了XML Literal之后,我们如何用它解决VB.Net中多行字符串的问题呢?来看示例:

 

Dim sourceText As String =  
    <string>  
  
        Imports Microsoft.VisualBasic  
        Imports System  
        Imports System.Collections  
        Imports Microsoft.Win32  
        Imports System.Linq  
        Imports System.Text  
        Imports Roslyn.Compilers  
        Imports System.ComponentModel  
        Imports System.Runtime.CompilerServices  
        Imports Roslyn.Compilers.VisualBasic  
          
        Namespace HelloWorld  
          Module Program  
            Sub Main(args As String())  
              Console.WriteLine("Hello, World!")  
            End Sub  
          End Module  
        End Namespace  
    </string>  

  

 
 

 

对比一下前面的代码,有没有发自内心的想说出“我靠”两个字?

 

 

 

比较明显的变化就是没有了As String的显式类型声明,然后后面调用.Value属性以确定这个变量确实是字符串。实际上与上面代码相比,这两段代码在编译、运行时并没有什么区别。也许第二种更漂亮些?

 

 

更厉害的是,我们还可以这样写:

Dim contact2 = 
        <contact>
          <name>Patrick Hines</name>
          <%= From p In phoneNumbers2 
            Select <phone type=<%= p.Type %>><%= p.Number %></phone> 
          %>
        </contact>

  

所以以后不要嘲笑VB.NET 不能方便的写字符串了!!

另外吐槽VB.NET 不能多行语句写在一行的我也要说一下,这个在VB6之前就出现的产物你们不知道?且看:

Dim a, b As String : a = 1 : b = "abc"

  

 

让C#眼红的VB.NET属性