using System; class Triangle { public struct NeverCreateMe {} public Triangle(double side1, double side2, double side3) { Console.WriteLine("3 sides"); } public Triangle(double side1, double side2, NeverCreateMe ignored = default(NeverCreateMe), double angle = 0) { Console.WriteLine("2 sides and 1 angle"); } public Triangle(double side1, NeverCreateMe ignored = default(NeverCreateMe), double angle1 = 0, double angle2 = 0) { Console.WriteLine("1 side and 2 angles"); } } public class Test { public static void Main() { var a = new Triangle(1.0, 2.0, 3.0); var b = new Triangle(1.0, 2.0, angle: 3.0); var c = new Triangle(1.0, angle1: 2.0, angle2: 3.0); } }