====== Indexers and indexed properties ====== Indexers are a new concept for xBase developers. They permit to access the properties of an object like an array. Please see this sample class: class IndexerTest protect oValues as List constructor() oValues := List{} return property self[ nIndex as int ] as string get if oValues:Count >= nIndex return oValues[nIndex-1] else return "" endif end get set while oValues:Count < nIndex oValues:Add( "" ) end oValues[nIndex-1] := value end set end property end class This class can be used like this: function Start( ) as void local oTest as IndexerTest local nI as int oTest := IndexerTest{} oTest[1] := "Chris" oTest[2] := "Fabrice" oTest[3] := "Nikos" oTest[4]:= "Robert" for nI := 1 upto 5 Console.WriteLine( i"Element {nI}:" + oTest[nI] ) next return Classes with indexed properties can also be used like classes with dynamic arrays. Please see this sample: class IndexedProperty protect _oValues as Dictionary constructor() _oValues := Dictionary{} return property self[cName as string] as string get local cValue as string if _oValues:TryGetValue( cName, OUT cValue ) == false cValue := "< not assigned >" endif return cValue end get set if _oValues:ContainsKey( cName ) _oValues[cName] := value else _oValues:Add( cName, value ) endif end set end property end class To be used like this: oObject := IndexedProperty{} oObject["MyProp"] := "Hello X#" oObject["Prop2"] := "Hello again" System.Console.WriteLine( "MyProp:" + oObject["MyProp"] ) System.Console.WriteLine( "Prop2:" + oObject["Prop2"] ) System.Console.WriteLine( "Prop3:" + oObject["Prop3"] ) Please see also this Microsoft article: [[https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/indexers/|https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/indexers/]] And there is also a forum thread about this: Please see https://www.xsharp.info/forum/public-product/839-indexer-syntax