using System; using System.Text; public class Foo { public Foo(int v) { Value = v; } public int Value {get;} public static Bar operator*(string s, Foo f) { var sb = new StringBuilder(); for (var i = 0; i < f.Value; i++) sb.Append(s); return new Bar(sb.ToString()); } } public class Bar { public Bar(string s) { Value = s; } public string Value {get;} public static string operator*(Bar b, int c) { var sb = new StringBuilder(); for (var i = 0; i < c; i++) sb.Append(b.Value); return sb.ToString(); } public static implicit operator string(Bar b) => b.Value; public override string ToString() => Value; } public class Test { public static void Main() { var u = new Foo(5); Console.WriteLine("!" * u); Console.WriteLine("!" * u * 4); } }