<?xml version="1.0"?> <clause number="8.7.8" title="Instance constructors" informative="true"> <paragraph>An instance constructor is a member that implements the actions required to initialize an instance of a class. </paragraph> <paragraph>The example <code_example><![CDATA[ using System; class Point { public double x, y; public Point() { this.x = 0; this.y = 0; } public Point(double x, double y) { this.x = x; this.y = y; } public static double Distance(Point a, Point b) { double xdiff = a.x - b.x; double ydiff = a.y - b.y; return Math.Sqrt(xdiff * xdiff + ydiff * ydiff); } public override string ToString() { return string.Format("({0}, {1})", x, y); } } class Test { static void Main() { Point a = new Point(); Point b = new Point(3, 4); double d = Point.Distance(a, b); Console.WriteLine("Distance from {0} to {1} is {2}", a, b, d); } } ]]></code_example>shows a Point class that provides two public instance constructors, one of which takes no arguments, while the other takes two <keyword>double</keyword> arguments. </paragraph> <paragraph>If no instance constructor is supplied for a class, then an empty one with no parameters is automatically provided. </paragraph> </clause>