/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // An example of operator overloading. using System; // A three-dimensional coordinate class. class ThreeD { int x, y, z; // 3-D coordinates public ThreeD() { x = y = z = 0; } public ThreeD(int i, int j, int k) { x = i; y = j; z = k; } // Overload binary +. public static ThreeD operator +(ThreeD op1, ThreeD op2) { ThreeD result = new ThreeD(); /* This adds together the coordinates of the two points and returns the result. */ result.x = op1.x + op2.x; // These are integer additions result.y = op1.y + op2.y; // and the + retains its original result.z = op1.z + op2.z; // meaning relative to them. return result; } // Overload binary -. public static ThreeD operator -(ThreeD op1, ThreeD op2) { ThreeD result = new ThreeD(); /* Notice the order of the operands. op1 is the left operand and op2 is the right. */ result.x = op1.x - op2.x; // these are integer subtractions result.y = op1.y - op2.y; result.z = op1.z - op2.z; return result; } // Show X, Y, Z coordinates. public void show() { Console.WriteLine(x + ", " + y + ", " + z); } } public class ThreeDDemo { public static void Main() { ThreeD a = new ThreeD(1, 2, 3); ThreeD b = new ThreeD(10, 10, 10); ThreeD c = new ThreeD(); Console.Write("Here is a: "); a.show(); Console.WriteLine(); Console.Write("Here is b: "); b.show(); Console.WriteLine(); c = a + b; // add a and b together Console.Write("Result of a + b: "); c.show(); Console.WriteLine(); c = a + b + c; // add a, b and c together Console.Write("Result of a + b + c: "); c.show(); Console.WriteLine(); c = c - a; // subtract a Console.Write("Result of c - a: "); c.show(); Console.WriteLine(); c = c - b; // subtract b Console.Write("Result of c - b: "); c.show(); Console.WriteLine(); } }
Class Interface
Pass by ref for object parameters
using System; using System.Collections.Generic; using System.Text; class Pass { public static void Value(ref int param) { param = 42; } public static void Reference(WrappedInt param) { param.Number = 42; } } class WrappedInt { public int Number; } class Program { static void Entrance() { int i = 0; Console.WriteLine(i); Pass.Value(ref i); Console.WriteLine(i); WrappedInt wi = new WrappedInt(); Console.WriteLine(wi.Number); Pass.Reference(wi); Console.WriteLine(wi.Number); } static void Main(string[] args) { try { Entrance(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
Point object
using System; using System.Collections.Generic; using System.Text; class Point { public Point() { this.x = -1; this.y = -1; objectCount++; } public Point(int x, int y) { this.x = x; this.y = y; objectCount++; } public double DistanceTo(Point other) { int xDiff = this.x - other.x; int yDiff = this.y - other.y; return Math.Sqrt((xDiff * xDiff) + (yDiff * yDiff)); } public static int ObjectCount() { return objectCount; } private int x, y; private static int objectCount = 0; } class Program { static void Main(string[] args) { try { Point origin = new Point(); Point bottomRight = new Point(1024, 1280); double distance = origin.DistanceTo(bottomRight); Console.WriteLine("Distance is {0}", distance); Console.WriteLine("No of Point objects: {0}", Point.ObjectCount()); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }
Object assignment
using System; public class Foo { public int i; } class RefTest1App { static void Main(string[] args) { Foo test1 = new Foo(); test1.i = 1; Foo test2 = new Foo(); test2.i = 2; Console.WriteLine("BEFORE OBJECT ASSIGNMENT"); Console.WriteLine("test1.i={0}", test1.i); Console.WriteLine("test2.i={0}", test2.i); Console.WriteLine(); test1 = test2; Console.WriteLine("AFTER OBJECT ASSIGNMENT"); Console.WriteLine("test1.i={0}", test1.i); Console.WriteLine("test2.i={0}", test2.i); Console.WriteLine(); test1.i = 42; Console.WriteLine("AFTER CHANGE TO ONLY TEST1 MEMBER"); Console.WriteLine("test1.i={0}", test1.i); Console.WriteLine("test2.i={0}", test2.i); } }
Catch NullReferenceException Exception
using System; class MyClass { public int Value; } class MainClass { public static void Main() { try { MyClass MyObject = new MyClass(); MyObject = null; MyObject.Value = 123; } catch (NullReferenceException) { Console.WriteLine("Cannot reference a null object."); } } }
Calling a Class Method on a Class
using System; public class MainClass { public static void Main() { string firstName = "J"; string lastName = "R"; string name = string.Format("{0} {1}", firstName, lastName); Console.WriteLine(name); } }
Calling an Instance Method on an Object
using System; public class MainClass { public static void Main() { string name = "Joe"; Console.WriteLine(name.ToUpper()); } }