[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