using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq;
namespace ConsoleApplication1 { public class A { public List<string> s1 = new List<string>(); public List<int> s2 = new List<int>();
public static A operator +(A a, int x) { a.s2.Add(x); return a; }
public static A operator +(A a, string x) { a.s1.Add(x); return a; }
public static A operator ++(A a) { var b = new A(); b.s1 = a.s1; b.s1.AddRange(a.s2.Select(x => x.ToString())); b.s2 = a.s2.Select(x => x + 1).ToList(); return b; }
}
class Program { static void Main(string[] args) { var a = new A(); a += 1234; a += "1234"; Debug.Assert(a.s1.Count == 1); var b = a++; Debug.Assert(b.s2.First() == 1234); Debug.Assert(a.s2.First() == 1235); Console.ReadKey(); } } }