Re: How to overload == for System.Double

Peter Ritchie <[email protected]> Thu, 1 Feb 2007 17:57:32 -0500
Newsgroups gmane.comp.windows.devel.dotnet.cx
Message-ID <LISTSERV%[email protected]>
I was under the impression that the scope of extension methods did not
include extending operators.  The C# 3.0 spec. provides no detail for this
either way.

If it does, that's nother reason not to like extension methods....

On Thu, 1 Feb 2007 16:21:11 -0500, Shawn Wildermuth
<[email protected]> wrote:

><sarcasm>
>   You should be able to do this with C# 3.0 Extension Methods (or
whatever
>they are called).  Of course, it’s an impossibly bad idea so don't
try...but
>luckily we'll be able to do it soon.
></sarcasm>
>
>
>Thanks,
> 
>Shawn Wildermuth
>Wildermuth Consulting Services, LLC
>http://wildermuthconsulting.com
>http://adoguy.com
>Microsoft MVP (C#), MCSD.NET, Author and Speaker
>
>-----Original Message-----
>From: Discussion relating to the specifics of the C# and Managed C++
>languages [mailto:[email protected]] On Behalf Of Eames,
Andrew
>Sent: Thursday, February 01, 2007 4:00 PM
>To: [email protected]
>Subject: Re: [DOTNET-CX] How to overload == for System.Double
>
> Even if you could do this it is probably a really bad idea. Instead I
>suggest you write a separate function
>
>Static bool Equallish(doubl lhs,double rhs)
>
>Andrew
>
>-----Original Message-----
>From: Discussion relating to the specifics of the C# and Managed C++
>languages [mailto:[email protected]] On Behalf Of Jack Brown
>Sent: Thursday, February 01, 2007 3:33 PM
>To: [email protected]
>Subject: [DOTNET-CX] How to overload == for System.Double
>
>Is it possible?
>
>If I put these in a project:
>
>                public static bool operator ==( double lhs, double rhs )
>                {
>                }
>                public static bool operator !=( double lhs, double rhs )
>                {
>                }
>
>I get a compiler error: One of the parameters of a binary operator must
>be the containing type
>
>I get this since the overloads are inside a class so they need to have
>parameters that are of the containing class type. My problem is that I
>can't put the operator overloads outside a class.
>
>The reason I'm doing this is that I want to avoid the problems
>associated with exact equality comparisons of floating point numbers. I
>plan/wish to add a Math.Abs(lhs-rhs) <= epsilon where epsilon is some
>suitably small value.
>
>Any help, or at least confirmation that I can't do what I'd like to
>would be appreciated.

===================================
This list is hosted by DevelopMentor®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com