【发布时间】:2010-12-20 18:02:49
【问题描述】:
我想创建自己的类扩展整数数组。那可能吗?我需要的是整数数组,可以通过“+”运算符添加到另一个数组(每个元素添加到每个数组),并通过“==”进行比较,因此它可以(希望)用作字典中的键。
问题是我不想为我的新类实现整个 IList 接口,而只是将这两个运算符添加到现有数组类中。
我正在尝试做这样的事情:
class MyArray : Array<int>
但它显然不是那样工作的;)。
对不起,如果我不清楚,但我正在寻找解决方案几个小时......
更新:
我尝试过这样的事情:
class Zmienne : IEquatable<Zmienne>
{
public int[] x;
public Zmienne(int ilosc)
{
x = new int[ilosc];
}
public override bool Equals(object obj)
{
if (obj == null || GetType() != obj.GetType())
{
return false;
}
return base.Equals((Zmienne)obj);
}
public bool Equals(Zmienne drugie)
{
if (x.Length != drugie.x.Length)
return false;
else
{
for (int i = 0; i < x.Length; i++)
{
if (x[i] != drugie.x[i])
return false;
}
}
return true;
}
public override int GetHashCode()
{
int hash = x[0].GetHashCode();
for (int i = 1; i < x.Length; i++)
hash = hash ^ x[i].GetHashCode();
return hash;
}
}
然后像这样使用它:
Zmienne tab1 = new Zmienne(2);
Zmienne tab2 = new Zmienne(2);
tab1.x[0] = 1;
tab1.x[1] = 1;
tab2.x[0] = 1;
tab2.x[1] = 1;
if (tab1 == tab2)
Console.WriteLine("Works!");
而且没有效果。不幸的是,我不擅长接口和重写方法:(。至于我尝试这样做的原因。我有一些方程式,例如:
x1 + x2 = 0.45
x1 + x4 = 0.2
x2 + x4 = 0.11
它们还有很多,例如,我需要将第一个方程添加到第二个方程并搜索所有其他方程以找出是否有任何与 x'es 的组合相匹配的结果。
也许我走错了方向?
【问题讨论】:
标签: c# arrays operators operator-overloading