Article View: alt.pl.comp.lang.csharp
Article #22265dziedziczenie po typie float
From: Gregory Moron
Date: Mon, 24 Oct 2011 20:43
Date: Mon, 24 Oct 2011 20:43
39 lines
2284 bytes
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-mailShow 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