diff options
Diffstat (limited to 'Examples/csharp/class/runme.cs')
-rw-r--r-- | Examples/csharp/class/runme.cs | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Examples/csharp/class/runme.cs b/Examples/csharp/class/runme.cs new file mode 100644 index 0000000..9088031 --- /dev/null +++ b/Examples/csharp/class/runme.cs @@ -0,0 +1,66 @@ +// This example illustrates how C++ classes can be used from C# using SWIG. +// The C# class gets mapped onto the C++ class and behaves as if it is a C# class. + +using System; + +public class runme +{ + static void Main() + { + // ----- Object creation ----- + + Console.WriteLine( "Creating some objects:" ); + + using (Square s = new Square(10)) + using (Circle c = new Circle(10)) + { + Console.WriteLine( " Created circle " + c ); + Console.WriteLine( " Created square " + s ); + + // ----- Access a static member ----- + + Console.WriteLine( "\nA total of " + Shape.nshapes + " shapes were created" ); + + // ----- Member data access ----- + + // Notice how we can do this using functions specific to + // the 'Circle' class. + c.x = 20; + c.y = 30; + + // Now use the same functions in the base class + Shape shape = s; + shape.x = -10; + shape.y = 5; + + Console.WriteLine( "\nHere is their current position:" ); + Console.WriteLine( " Circle = (" + c.x + " " + c.y + ")" ); + Console.WriteLine( " Square = (" + s.x + " " + s.y + ")" ); + + // ----- Call some methods ----- + + Console.WriteLine( "\nHere are some properties of the shapes:" ); + Shape[] shapes = {c,s}; + // for (int i=0; i<shapes.Size; i++) + for (int i=0; i<2; i++) + { + Console.WriteLine( " " + shapes[i].ToString() ); + Console.WriteLine( " area = " + shapes[i].area() ); + Console.WriteLine( " perimeter = " + shapes[i].perimeter() ); + } + + // Notice how the area() and perimeter() functions really + // invoke the appropriate virtual method on each object. + + // ----- Delete everything ----- + + Console.WriteLine( "\nGuess I'll clean up now" ); + + } + // Note: when this using scope is exited the C# Dispose() methods + // are called which in turn call the C++ destructors + + Console.WriteLine( Shape.nshapes + " shapes remain" ); + Console.WriteLine( "Goodbye" ); + } +} |