keywords
| Boo syntax |
C# equivalent |
| class Car: pass
pass keyword |
public class Car { } |
| employee is null |
employee == null |
| "foo" is "bar" employee isa Manager |
ReferenceEquals("foo","bar") employee is Manager |
| employee is not null |
employee != null |
| not employee.IsTemporary |
!employee.IsTemporary |
| employee is not null and employee isa Manager |
employee != null && employee is Manage |
| employee isa Manager or not employee.IsTemporary |
(employee is Manager) || (!employee.IsTempor |
| cast(int, variable) |
(int)variable |
| name = variable as string |
string name = variable as string; |
| typeOfString = typeof(string) |
Type typeOfString = typeof(string); |
| typeOfString = string |
Type typeOfString = typeof(string); |
Conditionals
|
|
|
| if lives == 0: print "game over" |
if (lives == 0) Console.WriteLine("game over"); |
| if lives == 0: print "game over" game.Finish() |
if( lives == 0) { Console.WriteLine("game over"); game.Finish(); } |
| if not lives: print "game over" |
if (lives == 0) Console.WriteLine("game over"); |
| unless lives: print "game over" |
if (lives == 0) Console.WriteLine("game over"); |
| print "game over" unless lives
print "game over" if lives == 0 |
if (lives == 0) Console.WriteLine("game over"); |
| if lives == 0: print "game over" else: print "carry on" |
if (lives == 0) Console.WriteLine("game over"); else Console.Writeline("carry on"); |
| if lives == 0: print "game over" elif lives == 1: print "Last life" else: print "carry on" |
if (lives == 0) Console.WriteLine("game over"); else if (lives == 1) Console.WriteLine("last life") else Console.Writeline("carry on"); |
Loops and iterations
|
|
|
| while lives != 0: PlayRound() |
while(lives!=0) PlayRound(); |
| for i in range(0,10): print i |
for(int i=0;i<10;i++) Console.WriteLine(i); |
| for user in users: print user.Name for user in users:
if user.Name is null: continue print user.Name |
foreach(User user in users) Console.WriteLine(user.Name); foreach(User user in users) { if(user.Name == null) continue; Console.WriteLine(user.Name); } |
| index = 0 for user in users: break if index > 10 print user.Name index += 1 |
int index = 0; foreach(User user in users) { if(index > 10) break; Console.WriteLine(user.Name); index += 1; } |
| while ie.Busy: Thread.Sleep(50ms) |
while( ie.Busy) Thread.Sleep(50); |
Type declarations
|
|
|
| class Car: wheels as int defStartEngine(): pass |
public class Car { protected int wheels; public void StartEngine() { } } |
| internal class Car: pass |
internal class Car {} |
| struct Point: X as int Y as int |
public struct Point { public int X; public int Y; } |
| class Truck(Car): pass |
public class Truck : Car { } |
| class Car(IDisposable): def Dispose(): pass |
public class Car : IDisposable { public void Dispose() { } } |
| enumTddStages: Red Green Refactor |
public enumTddStages { Red, Green, Refactor } |
Methods, properties, and control structures
|
|
|
| def Start(): pass |
public void Start() { } |
| def Start(async as bool): pass |
public void Start(boolasync) { } |
| def Start(async as bool) as WaitHandle: raise NotImplementedException() |
public WaitHandle Start(boolasync) { throw new NotImplementedException(); } |
| defGetInteger(): return 1 |
public intGetInteger() { return 1; } |
| defSetItem(key,val): pass |
public void SetItem(object key, object val) { } |
| defVarArgs(*args as (object)): pass
VarArgs(1, "foo") |
public void VarArgs(params object[] args) { } |
| Name: get: return "Boo" |
public string Name { get { return "C#"; } } |
| Email: get: return email set: email = value
Email: get: return email set: email = value |
public string Email { get { return email; } set { email = value; } } |
| [property(Email)] email as string |
public string Email { get; set; } |
| xml = XmlDocument() |
XmlDocument xml = new XmlDocument() |
| emp = Employee(Name: "foo", Id: 15) |
varemp = new Employee{ Name = "foo", Id = 15}; |
| class Car(): def constructor(): print "Car created!" |
public class Car { public Car() { Console.WriteLine("Car created!"); } } |
| class Car(): def destructor(): print "died" |
public class Car { public ~Car() { Console.WriteLine("died"); } } |
| raise NotImplementedException() |
throw new NotImplementedException(); |
| raise "error happened" |
throw new Exception("error happened"); |
| try: # do something except: print "error happened" |
try { // do something } catch { Console.WriteLine("error happened"); } |
| try: # do something except e as SoapException: print e.Detail except e: print e |
try { // do something } catch(SoapException e) { Console.WriteLine(e); } catch(Exception e) { Console.WriteLine(e); } |
| try: # do something except e: print e ensure: print "done" |
try { // do something } catch(Exception e) { Console.WriteLine(e); } finally { Console.WriteLine("done"); } |
| try: # do something except e: print e raise |
try { // do something } catch(Exception e) { Console.WriteLine(e); throw; } |
| save.Click += do(sender,e): print "Clicked" |
save.Click += delegate( object sender, EventArgs e ) { Console.WriteLine("Clicked"); } |
| save.Click += { print "Clicked" } |
save.Click += (sender, e) => Console.WriteLine("Clicked"); |
| myList.Find( { i | i > 5 }) |
myList.Find(delegate(int i) { return i> 5; }); |
| namespace Foo.Bar.Baz class Foobar: pass |
namespace Foo.Bar.Baz { public class Foobar { } } |
| self.name = "foo"; |
this.name = "foo"; |
| super.name = "foo"; |
base.name = "foo"; |
| # single line comment // and this is one as well /* And here is a multi line comment */ |
// single line comment /* Multi line comment */ |
Useful macros
|
|
|
| assert user is not null |
Debug.Assert( user != null, "user is not null" |
| print "foo" |
Console.WriteLine("foo") |
| using db = RhinoConnection(): pass |
using(RhinoConnectiondb = new RhinoConnection()) { } |
| lock syncLock: #code under lock |
lock(syncLock) { // code under lock } |