Show/Hide Toolbars

XSharp

 

通过集合初始化程序,可以为集合填充值列表。

编译器会在后台生成调用集合 Add 方法的代码。

下面的示例创建了一个包含整数、字符串和(Person)类实例的列表。

 

USING System
USING System.Collections.Generic
USING System.Linq
USING System.Text
 
  FUNCTION Start() AS VOID
    LOCAL oList AS List<Int>
    // 下一行创建集合并添加 5 个元素
    // 注意双大括号:
    // 第一对大括号调用了 List<> 类的默认构造函数
    // 第二对大括号包围了值列表
     Console.WriteLine("集合初始化")
     oList := List<Int>{} {1,2,3,4,5}
    FOREACH VAR i IN oLIst
        Console.WriteLine(i)
    NEXT
    VAR oCompass := List<String>{}{"North", "East", "South", "West"}
    FOREACH VAR sDirection in oCompass
        Console.WriteLine(sDirection)
    NEXT
     Console.ReadLine()
    // 现在是一个对象初始值设定项的示例
    // 请注意,该对象没有构造函数
    // 我们直接为属性赋值
    // 这只有在有公共属性的情况下才会起作用
    // 同样有两个大括号:
    // 第一对大括号调用 Person 类的默认构造函数
    // 第二对大括号围绕着名-值对列表
 
     Console.WriteLine("Object Initializer")
    VAR oPerson := Person{}{FirstName := "John", LastName := "Smith"}
     ? oPerson:Name
     Console.ReadLine()
    // 将两者合并
    Var oPeople := List<Person> {} {;
                                Person{}{FirstName := "John", LastName := "Smith"}, ;
                                Person{}{FirstName := "Jane", LastName := "Doe"} ;
                             }
     Console.WriteLine("Collection and Object Initializers")                    
    FOREACH var oP in oPeople
        Console.WriteLine(oP:Name)
    NEXT
     Console.ReadLine()        
    RETURN
 
PUBLIC CLASS Person
  PROPERTY FirstName AS STRING AUTO
  PROPERTY LastName   AS STRING AUTO
  PROPERTY Name     AS STRING GET FirstName+" "+LastName
END CLASS