none
这两种方式为list(of string)斌值有什么不同? RRS feed

  • 问题

  • 截自 http://msdn.microsoft.com/zh-cn/library/bb546168.aspx

       Class Bouquet
            Public Flowers As List(Of String)
        End Class


        Sub Main()


            Dim Bouquets = New List(Of Bouquet) From {
                New Bouquet With {.Flowers = New List(Of String)(New String() {"sunflower", "daisy", "daffodil", "larksqur"})},
                New Bouquet With {.Flowers = New List(Of String)(New String() {"tulip", "rose", "orchid"})},
                New Bouquet With {.Flowers = New List(Of String)(New String() {"gladiolis", "lily", "snapdragon", "aster", "protea"})},
                New Bouquet With {.Flowers = New List(Of String)(New String() {"larkspur", "lilac", "iris", "danlia"})}}


        Dim query1 = Bouquets.Select(Function(b As Bouquet) b.Flowers)

        End Sub

    1.其中对Flowers字段的斌值写成:New Bouquet With {.Flowers = New List(Of String) From {"larkspur", "lilac", "iris", "danlia"}} 有什么不同?

    2.    Dim query1 = Bouquets.Select(Function(b As Bouquet) b.Flowers)这个好难懂,是不是lambda表达式,b是不是充当范围变量,是否与

          dim query1 =from b in bouquets select b.flowers 相当?为什么要写成这样子?

    请尽量详细解说一下,我才初学。
    专心学V
    2011年4月5日 7:45

答案

  • 1.其中对Flowers字段的斌值写成:New Bouquet With {.Flowers = New List(Of String) From {"larkspur", "lilac", "iris", "danlia"}} 有什么不同?

    语法不通,效果一样。From是vs2010中给VB的新语法。vs2010下,推荐这种写法。

    2.    Dim query1 = Bouquets.Select(Function(b As Bouquet) b.Flowers)这个好难懂,是不是lambda表达式,b是不是充当范围变量,是否与

          dim query1 =from b in bouquets select b.flowers 相当?为什么要写成这样子?

    这个是Linq。上下效果一样。Linq是针对迭代器的,提供2种写法,一种是扩展方法,一种是编译器支持的特定表达式,前者是扩展方法形式调用,后者是编译器支持的表达式。就这样。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年4月9日 2:36
  • Hi,

    这个问题跟LINQ更相关,去这个论坛问吧。

    ADO.NET 与 LINQ 

    http://social.microsoft.com/Forums/zh-CN/adonetzhchs/threads

    Best regards,


    Mike Feng [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

     

    和 linq 一点关系都没有。。。。。

    new List(Of String)  (New String() from{})  会创建一个array 以后  再把内容循环赋值到list内

    而 

    new List(Of String) () From  {}   会直接调用   List(OF string ).Add()   N次

     

    当然jit可能有优化

     


    入了ipad,最近用ipad上论坛
    2011年4月7日 5:59

全部回复

  • Hi,

    这个问题跟LINQ更相关,去这个论坛问吧。

    ADO.NET 与 LINQ 

    http://social.microsoft.com/Forums/zh-CN/adonetzhchs/threads

    Best regards,


    Mike Feng [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年4月7日 4:35
    版主
  • Hi,

    这个问题跟LINQ更相关,去这个论坛问吧。

    ADO.NET 与 LINQ 

    http://social.microsoft.com/Forums/zh-CN/adonetzhchs/threads

    Best regards,


    Mike Feng [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

     

    和 linq 一点关系都没有。。。。。

    new List(Of String)  (New String() from{})  会创建一个array 以后  再把内容循环赋值到list内

    而 

    new List(Of String) () From  {}   会直接调用   List(OF string ).Add()   N次

     

    当然jit可能有优化

     


    入了ipad,最近用ipad上论坛
    2011年4月7日 5:59
  • 1.其中对Flowers字段的斌值写成:New Bouquet With {.Flowers = New List(Of String) From {"larkspur", "lilac", "iris", "danlia"}} 有什么不同?

    语法不通,效果一样。From是vs2010中给VB的新语法。vs2010下,推荐这种写法。

    2.    Dim query1 = Bouquets.Select(Function(b As Bouquet) b.Flowers)这个好难懂,是不是lambda表达式,b是不是充当范围变量,是否与

          dim query1 =from b in bouquets select b.flowers 相当?为什么要写成这样子?

    这个是Linq。上下效果一样。Linq是针对迭代器的,提供2种写法,一种是扩展方法,一种是编译器支持的特定表达式,前者是扩展方法形式调用,后者是编译器支持的表达式。就这样。


    2011 c# mvp China. *George读起来像不像“饺子”?我爱吃饺子,我叫George。
    2011年4月9日 2:36