Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

L'overriding nelle strutture compatibili con le CLS

Come molti di voi sanno, le Common Language Specifications (CLS) costituiscono un insieme di regole che lo sviluppatore segue affinchè i propri assembly .NET possano funzionare con sicurezza qualora utilizzati da diversi linguaggi gestiti.

Quando si implementano i propri tipi di dato in Visual Basic, tipicamente nelle strutture  Structure..End Structure, le CLS prevedono la ridefinizione di alcuni membri ereditati dalla classe Object. In particolare le strutture CLS-Compliant dovrebbero ridefinire l'operatore di uguaglianza (=), quello di negazione (<>), il metodo Equals e il metodo GetHashCode.

Per ridefinire i metodi Equals e GetHashCode è anche possibile implementare l'interfaccia IEqualityComparer, che predispone la definizione dei due metodi.

Di seguito un piccolo esempio di "overriding" degli operatori e del metodo Equals:

Public Structure MyStructure

           'Esegue una serie di overrides richiesti dalle CLS per la corretta implementazione del tipo

           Public Shared Operator =(ByVal obj1 As MyStructure, ByVal obj2 As MyStructure) As Boolean

                       Return obj1.Equals(obj2)

           End Operator

           Public Shared Operator <>(ByVal obj1 As MyStructure, ByVal obj2 As MyStructure) As Boolean

                      Return Not obj1.Equals(obj2)

            End Operator

          Public Overrides Function Equals(ByVal obj As Object) As Boolean

                      Return Object.Equals(Me, obj)

           End Function

          'segue implementazione della struttura

          ............

End Structure

E' possibile utilizzare il metodo statico Equals della classe Object per confrontare due oggetti. Ricordo che per analizzare la compatibilità dei propri assembly con le CLS è possibile utilizzare il tool gratuito Microsoft FxCop.

Alessandro

Print | posted on venerdì 1 dicembre 2006 01:33 | Filed Under [ .NET Framework Visual Basic ]

Powered by:
Powered By Subtext Powered By ASP.NET