[nem-pl] Varianty, a ToString
Michal Moskal
malekith at pld-linux.org
Sun May 9 14:30:53 CEST 2004
On Sun, May 09, 2004 at 01:47:28PM +0200, Kamil Skalski wrote:
> Sunday 09 May 2004 13:40, rzyjontko wrote:
> > A tak btw: dlaczego muszę pisać
> >
> > public f (a : System.Object, b : System.Object) : string
> > {
> > if (a.Equals (b))
> > a.ToString ()
> > else
> > b.ToString ()
> > }
>
> bo Equals : Object : bool
> i do tego jest w klasie Object
>
> Zdaje się, że możesz bezpiecznie zrzutować
> public f <'a> (a : 'a, b : 'a) : string
> {
> if ((a :> object) .Equals ((b :> object)))
> (a :> object).ToString ()
> else
> (b :> object).ToString ()
> }
>
> Choć może 'a powinna zachowywać się jak object... ale raczej nie.
Powinna. Wszystki typy w .NET dziedziczą po object, więc czemu nie. W
tej chwili można tak:
public f <'a> (a : 'a, b : 'a) : string
{
if ((a : object) .Equals (b))
(a : object).ToString ()
else
(b : object).ToString ()
}
Żadnych unsafe casts.
--
: Michal Moskal :: http://www.kernel.pl/~malekith :: GCS !tv h e>+++ b++
: When in doubt, use brute force. -- Ken Thompson :: UL++++$ C++ E--- a?
More information about the devel-pl
mailing list