🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #22265

dziedziczenie po typie float

#22265
From: Gregory Moron
Date: Mon, 24 Oct 2011 20:43
39 lines
2284 bytes
mam pewną zmienną o typie float i chciałbym porównując takie zmienne chcę 
móc mieć możliwość określenia warunku ich równości:
np. chciałbym aby liczby z przedziału (1,2) były równe 1, z przedziału (2,3) 
były równe 2. itd. (taki Math.Floor(value ))

Ponieważ wykorzystuję LINQ to żeby uzyskać takie wyniki muszę napisać własny 
komparator dla typu float i podawać go jako parametr dla różnych extension 
methods w rodzaju Where, Distinct itp.
Nie ma problemu oczywiście żebym zrobił cos takiego jak poniżej:

class floatComparer : IEqualityComparer<float>
{
    public bool Equals(float x, float y)
    {
        throw new NotImplementedException();
    }
    public int GetHashCode(float obj)
    {
        throw new NotImplementedException();
    }
}
Po zaimplementowaniu "Equals" i "GetHashCode" (z użyciem Math.Floor właśnie) 
miałbym to co chcę.

Niestety to spowoduje, ze wszystkie porównania floatow zaczną się tak 
zachowywać. A tego nie chcę.
W zdecydowanej większości inne zmienne typu float mają się zachowywać 
"normalnie".

I tu jestem w kropce.
Niestety nie można stworzyć typu myfloat (dla tej jednej zmiennej) 
dziedziczącego po float  i dla niej custom comparera jw.
Nie można, bo wszystkie zmienne podstawowe są zapieczętowane (bo tak 
naprawdę są "value type").

Jak wybrnąć z tej sytuacji?

pozdr
GM
Technical Details
Message-ID: <j84ikl$o16$1@news.task.gda.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.man.lodz.pl!news.task.gda.pl!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.man.lodz.pl!news.task.gda.pl!not-for-mail
From: "Gregory Moron" <gregory.moron@wp.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: dziedziczenie po typie float
Date: Mon, 24 Oct 2011 22:43:04 +0200
Organization: CI TASK http://www.task.gda.pl/
Lines: 41
Message-ID: <j84ikl$o16$1@news.task.gda.pl>
NNTP-Posting-Host: 87-207-160-21.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: news.task.gda.pl 1319488981 24614 87.207.160.21 (24 Oct 2011 20:43:01 GMT)
X-Complaints-To: abuse@news.task.gda.pl
NNTP-Posting-Date: Mon, 24 Oct 2011 20:43:01 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Newsreader: Microsoft Windows Live Mail 15.4.3538.513
X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3538.513
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit