Show/Hide Toolbars

XSharp

//
// This example shows various new expression formats
//
using System.Collections.Generic
 
Function Start() as void
  VAR oNone   := Person{"No", "Parent"}
 
  FOREACH VAR oValue in GetList()
    if oValue IS STRING                 // Value IS Type
        ? (String) oValue
    ELSEIF oValue IS INT
        ? (Int) oValue
    ELSEIF oValue IS DateTime
        ? (DateTime) oValue
    ELSEIF oValue IS Person
        LOCAL oPerson as Person
        oPerson := (Person) oValue
        ? oPerson:FirstName, oPerson:LastName
    // Value DEFAULT Value2 . When Value IS NULL then Value2 will be used
        oPerson := oPerson:Parent DEFAULT oNone      
        ? "Parent: ", oPerson:FirstName, oPerson:LastName
    ENDIF
  NEXT
  LOCAL oEmptyPerson as Person
  LOCAL sName as STRING
  oEmptyPerson := GetAPerson()
  sName   := oEmptyPerson?:FirstName         // Conditional Access: This will not crash, even when Person is a NULL_OBJECT
  ? sName DEFAULT "None"
  Console.ReadLine()
  RETURN
 
FUNCTION GetList() AS List<OBJECT>
  VAR aList := List<OBJECT>{}
  aList:Add(DateTime.Now)
  aList:Add("abcdefg")
  aList:Add(123456)
  VAR oPerson := Person{"John", "Doe"}
  aList:Add(oPerson)
  VAR oChild := Person{"Jane", "Doe"}
  oChild:Parent := oPerson
  aList:Add(oChild)
  RETURN aList
 
CLASS Person
  EXPORT FirstName   AS STRING
  EXPORT LastName     as STRING
  EXPORT Parent     as Person
  CONSTRUCTOR(First as STRING, Last as STRING)
     FirstName   := First
     LastName   := Last
 
END CLASS
 
FUNCTION GetAPerson() as Person
  RETURN NULL_OBJECT