using System;
using System.Collections;
// Operator overloading
namespace OperatorOverload
{
class Program
{
static void Main(string[] args)
{
int i = 5;
int j = 3;
int k = i + j;
string fn = "per";
string ln = "Larsen";
string fullname = fn + " " + ln ;
Set A = new Set(); // A =
A.Add(3);
A.Add(5);
A.Add(13);
A.Add(8);
Console.WriteLine ("A = " + A);
Set B = new Set();
B.Add(10);
B.Add(11);
B.Add(8);
B.Add(5);
Console.WriteLine("B = " +B);
Set c = A + B; //union Set (foreningsmngde)
//A+B operator overloading
Set D = A * B; // Intersection (fllesmngde)
Console.WriteLine("c=" +c);
Console.WriteLine("D=" +D);
/*
* C={3,8,5,10,13,11}
* D={5,8}
*/
}
}
class Set {
private ArrayList list = new ArrayList();
public Set() {
}
public void Add(Object obj) {
if (obj != null && !list.Contains(obj)) {
list.Add(obj);
}
}
public static Set operator*(Set a, Set b) {
Set c = new Set();
for (int i = 0; i < a.list.Count; i++) {
if (b.list.Contains(a.list[i])) {
c.Add(a.list[i]);
}
}
return c;
}
public static Set operator+(Set a, Set b) {
Set c = new Set();
for (int i = 0; i < a.list.Count; i++) {
c.Add(a.list[i]);
}
for (int i = 0; i < b.list.Count; i++) {
c.Add(b.list[i]);
}
return c;
}
public override string ToString() {
string tmp = null;
for (int i = 0; i < list.Count; i++) {
if (tmp == null)
tmp = list[i].ToString();
else
tmp = tmp + ", " + list[i].ToString();
}
return tmp;
}
}
}