Переопределение оператора

Dmitry_d2
Дата: 28.12.2009 15:55:11
Поставили задание, написать класс, с переопределенным оператором -=
Как такое сделать?
public static Vec operator -=
Что дальше пишем?
gds
Дата: 28.12.2009 16:03:08
Dmitry_d2,

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlServerCe;

namespace EconomicCounter
{
#region class DBVersion
/// <summary>
/// Версия БД
/// </summary>
internal sealed class DBVersion
{
#region local variable
public Int32 MajorVersion { get; set; }
public Int32 MinorVersion { get; set; }
#endregion
#region override methods
public override int GetHashCode()
{
return base.GetHashCode();
}
public override string ToString()
{
return string.Format("v.{0}.{0}", this.MajorVersion.ToString(), this.MinorVersion.ToString());
}
public override bool Equals(object obj)
{
DBVersion tmp = obj as DBVersion;

if(tmp == null)
return false;

if ((tmp.MajorVersion != this.MajorVersion) || (tmp.MinorVersion != this.MinorVersion))
return false;

return true;
}
#endregion
#region override operators
public static bool operator<(DBVersion dbv1, DBVersion dbv2)
{
if (dbv1.MajorVersion < dbv2.MajorVersion)
return true;

if (dbv1.MajorVersion == dbv2.MajorVersion)
{
if (dbv1.MinorVersion < dbv2.MinorVersion)
return true;
else
return false;
}
else
return false;
}
public static bool operator >(DBVersion dbv1, DBVersion dbv2)
{
if (dbv1.MajorVersion > dbv2.MajorVersion)
return true;

if (dbv1.MajorVersion == dbv2.MajorVersion)
{
if (dbv1.MinorVersion > dbv2.MinorVersion)
return true;
else
return false;
}
else
return false;
}
public static bool operator >=(DBVersion dbv1, DBVersion dbv2)
{
if (dbv1.MajorVersion > dbv2.MajorVersion)
return true;

if (dbv1.MajorVersion == dbv2.MajorVersion)
{
if (dbv1.MinorVersion >= dbv2.MinorVersion)
return true;
else
return false;
}
else
return false;
}
public static bool operator <=(DBVersion dbv1, DBVersion dbv2)
{
if (dbv1.MajorVersion < dbv2.MajorVersion)
return true;

if (dbv1.MajorVersion == dbv2.MajorVersion)
{
if (dbv1.MinorVersion <= dbv2.MinorVersion)
return true;
else
return false;
}
else
return false;
}

#endregion
#region Constructors
public DBVersion()
{
this.MajorVersion = 0;
this.MinorVersion = 0;
}
public DBVersion(Int32 lpMajorVersion,Int32 lpMinorVersion)
{
this.MajorVersion = lpMajorVersion;
this.MinorVersion = lpMinorVersion;
}
#endregion
}
#endregion
}
Dmitry_d2
Дата: 28.12.2009 16:07:15
Да, перечисленные операторы выше я знаю как переопределять, но подобным способом для -= неполучается
it4kp
Дата: 28.12.2009 16:26:15
Dmitry_d2,

Просто переопределите бинарный оператор "-".
x -= y это, грубо говоря тоже самое что x = x - y.
Dmitry_d2
Дата: 28.12.2009 16:32:46
Ну я так и думал, просто задание странно поставленно, опечатка чтоль...оператора _= не существует?
it4kp
Дата: 28.12.2009 16:47:27
нет, не существует