The this(...)
form of constructor initializers is commonly used in conjunction with overloading to implement optional constructor parameters. In the example
class Text { public Text(): this(0, 0, null) {} public Text(int x, int y): this(x, y, null) {} public Text(int x, int y, string s) { // Actual constructor implementation } }
the first two constructors merely provide the default values for the missing arguments. Both use a this(...)
constructor initializer to invoke the third constructor, which actually does the work of initializing the new instance. The effect is that of optional constructor parameters:
Text t1 = new Text(); // Same as Text(0, 0, null) Text t2 = new Text(5, 10); // Same as Text(5, 10, null) Text t3 = new Text(5, 20, "Hello");