Uno Language Reference

The Uno langauge is a dialect of C#, designed for cross-compilation to C++ and other languages. Uno does not require the .NET Framework, but has instead a more lightweight library called UnoCore.

The syntax of Uno is more or less identical to C#, with deviations documented here.

Memory management

Like C# (and Java, JavaScript etc.), Uno features automatic memory management. This means you generally don't need to worry about manually reclaiming memory.

Uno-specific keywords

These keywords are specific to Uno or have semantics that differ from their C# equivalents.

C#-equivalent keywords

The meaning of keywords are inherited from the C# specification, with a few minor deviations as specified in the footnotes.

Footnotes:

  • x : These keywords are not currently supported, but reserved for future improved compatiblity with C#.
  • 1 : A package in Uno is equivalent to a assembly in C#.
  • 2 : Uno does currenlty not support generic constraints (i.e. the new keyword cannot be used in this context)
  • 3 : In Uno, out and ref cannot be used as a generic type parameter modifier.
  • 4 : Uno only supports partial types, not partial methods (C# 5.0). Also note that when using meta properties in partial classes, the order in which the partial classes are combined becomes undefined, hence the order in which the meta properties are defined also becomes undefined in some cases.
  • 5 : In Uno, using var is mandatory in cases where no assign-cast is performed, otherwise a warning is generated.
  • 6 : In Uno, classes may also specify blocks in the class base list, where this indicates the class will use meta property signatures from (but not apply) the specified blocks.