[Serializable]
public class ComplexArray
{
#region Attributes
/// <summary>
/// Array Size
/// </summary>
protected int m_iSize;
/// <summary>
/// Real part of the data
/// </summary>
protected double[] m_dReal;
/// <summary>
/// Imaginary part of the data
/// </summary>
protected double[] m_dImag;
#region Construction
/// <summary>
/// Default constructor
/// </summary>
public ComplexArray()
{
}
public override bool Equals(object o)
{
if (this == (ComplexArray)o)
return true;
else
return false;
}
public static bool operator ==(ComplexArray src1, ComplexArray src2)
{
if (src1.m_iSize != src2.m_iSize)
return false;
for (int ii = 0; ii < src1.m_iSize; ii++)
{
if (src1.Real[ii] != src2.Real[ii])
return false;
if (src1.Imag[ii] != src2.Imag[ii])
return false;
}
return true;
}
public static bool operator !=(ComplexArray src1, ComplexArray src2)
{
if (src1 == src2)
return false;
else
return true;
}
}
Я сотворенные класс, называемое сложный массивом и намерением этого класса, чтобы сохранить реальные и мнимые числа и различные операторы были перегружены, как +, *,! =, ==Перегрузка операторов в C#
Предположим, что некоторая функция возвращает экземпляр этого класса.
ComplexArray array = GetValue();
Я хочу, чтобы проверить, является ли ссылка действительна или нет ...
if(array != null)
{
//proceed further....
}
Проблема: Когда значение проверяется на нулевое значение, происходит исключение, потому что внутренне = перегруженных вызовов функций! ==.
Как избежать такой ситуации при перегрузке оператора? Или как сделать оператор! = Или == проверить нулевое значение и вернуть правильные значения (true или false)
Может это не поможет, но я бы использовал класс/struct для комплексного числа и регулярных массивов, чтобы избежать этих проблем. – Anton
Как насчет 'object.Equals (array, null);' или 'array.Equals (null);' –
Я согласен с [Антон] (http://stackoverflow.com/users/149851/anton), есть куча [Коллекции в C#] (http://msdn.microsoft.com/en-us/library/ system.collections.generic.aspx), которые могут быть использованы для этого. – Default