久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

【重要】VB.NET中的多行字符串

 nxhujiee 2019-10-27
從我有關(guān)于vb.net的記憶開始,,VB.net程序員們就一直因?yàn)榇a中的多行字符串問題一次又一次地被擊倒,。
一開始,,大家使用 & 和換行符 _ 來連接字符串,,呃,,后來程序員們覺得這太荒唐了,于是出現(xiàn)了高級一些的用法,,例如StringBuilder(經(jīng)常被我簡寫成sb),。即便如此,VB.net的多行字符串還是無法做到像C#一樣的簡潔與高可讀性:

  1. string query = @"SELECT first, last
  2. FROM table
  3. WHERE id = 1";

VB.NET的IDE包括編譯器很“自然”地不支持這些特性,,原因嘛,,簡單來說,就是VB.NET沒有分號,。由大量的連接符和換行符(甚至還有vbCrLf和ControlChars.NewLine)組成的多行字符串使代碼非?;靵y而且使可讀性變得很低,導(dǎo)致很長一段時間VB程序員們非常羨慕C#程序員,,呃,,至少在這個方面是。

舉個栗子,?這里有一個:

  1. Dim sourceText As String =
  2. "Imports Microsoft.VisualBasic" & vbNewLine &
  3. "Imports System" & vbNewLine &
  4. "Imports System.Collections" & vbNewLine &
  5. "Imports Microsoft.Win32" & vbNewLine &
  6. "Imports System.Linq" & vbNewLine &
  7. "Imports System.Text" & vbNewLine &
  8. "Imports Roslyn.Compilers" & vbNewLine &
  9. "Imports System.ComponentModel" & vbNewLine &
  10. "Imports System.Runtime.CompilerServices" & vbNewLine &
  11. "Imports Roslyn.Compilers.VisualBasic" & vbNewLine &
  12. vbNewLine &
  13. "Namespace HelloWorld" & vbNewLine &
  14. " Module Program" & vbNewLine &
  15. " Sub Main(args As String())" & vbNewLine &
  16. " Console.WriteLine(""Hello, World!"")" & vbNewLine &
  17. " End Sub" & vbNewLine &
  18. " End Module" & vbNewLine &
  19. "End Namespace"

至于你暈不暈,,反正我是暈了......






漫長的冬天持續(xù)了很長時間,直到XML Literal的出現(xiàn)


什么是XML Literal呢,?
"XML Literal"是在VB.NET 9.0引入的一個用于構(gòu)建XML對象的新特性,。VB.NET有了如此神器,現(xiàn)在輪到C#程序員羨慕了,。當(dāng)然這篇文章不是說如何使用XML Literal的,,關(guān)于這個新特性的更多信息可以參考MSDN:
http://msdn.microsoft.com/en-us/library/bb384629.aspx


有了XML Literal之后,我們?nèi)绾斡盟鉀QVB.NET中多行字符串的問題呢,?來看示例:

  1. Dim sourceText As String =
  2. <string>
  3. Imports Microsoft.VisualBasic
  4. Imports System
  5. Imports System.Collections
  6. Imports Microsoft.Win32
  7. Imports System.Linq
  8. Imports System.Text
  9. Imports Roslyn.Compilers
  10. Imports System.ComponentModel
  11. Imports System.Runtime.CompilerServices
  12. Imports Roslyn.Compilers.VisualBasic
  13. Namespace HelloWorld
  14. Module Program
  15. Sub Main(args As String())
  16. Console.WriteLine("Hello, World!")
  17. End Sub
  18. End Module
  19. End Namespace
  20. </string>


對比一下前面的代碼,,有沒有發(fā)自內(nèi)心的想說出“我靠”兩個字?
經(jīng)過試驗(yàn),,代碼中的<string>不是必須叫"string"的,,你也可以改成<字符串></字符串>,呃,,如果你喜歡的話,。原理嘛,就是編譯器將代碼中的xml片段轉(zhuǎn)換成了XElement,,所以名字并不重要,。


如果你喜歡類型推斷,也可以用這種形式:

  1. Dim sourceText =
  2. <string>
  3. Imports Microsoft.VisualBasic
  4. Imports System
  5. Imports System.Collections
  6. Imports Microsoft.Win32
  7. Imports System.Linq
  8. Imports System.Text
  9. Imports Roslyn.Compilers
  10. Imports System.ComponentModel
  11. Imports System.Runtime.CompilerServices
  12. Imports Roslyn.Compilers.VisualBasic
  13. Namespace HelloWorld
  14. Module Program
  15. Sub Main(args As String())
  16. Console.WriteLine("Hello, World!")
  17. End Sub
  18. End Module
  19. End Namespace
  20. </string>.Value


比較明顯的變化就是沒有了As String的顯式類型聲明,,然后后面調(diào)用.Value屬性以確定這個變量確實(shí)是字符串,。實(shí)際上與上面代碼相比,這兩段代碼在編譯、運(yùn)行時并沒有什么區(qū)別,。也許第二種更漂亮些?



有的時候,,多行字符串存在的意義就是把他們顯示在窗口,、控制臺或者M(jìn)sgBox中,不知你發(fā)現(xiàn)沒有,,上面的XML片段中的多行字符串.....都是有超級多的前置空格的(為了保持代碼伸縮性,,看起來也漂亮,主要原因其實(shí)是XML文本并不關(guān)心空格的多少),。
不過我敢肯定,,實(shí)際上你并不需要這么多沒有用的空格。那怎么樣去掉這些空格呢,?這個并沒有什么現(xiàn)成的辦法,,所以說,最后呢,,at last,,歸根結(jié)底,你需要做的事情只有一個——把空格們都刪掉:

  1. Dim sourceText = <string>Imports Microsoft.VisualBasic
  2. Imports System
  3. Imports System.Collections
  4. Imports Microsoft.Win32
  5. Imports System.Linq
  6. Imports System.Text
  7. Imports Roslyn.Compilers
  8. Imports System.ComponentModel
  9. Imports System.Runtime.CompilerServices
  10. Imports Roslyn.Compilers.VisualBasic
  11. Namespace HelloWorld
  12. Module Program
  13. Sub Main(args As String())
  14. Console.WriteLine("Hello, World!")
  15. End Sub
  16. End Module
  17. End Namespace</string>.Value


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多