rendiamo disponibili l'indicizzatori c# in altri linguaggi

di Marco Leoncini, in c#,

Una delle caratteristiche di .net (più precisamente del CLR) è quelle di consentire di creare le propie apllicazioni attingendo da "moduli" scritti in diversi linguaggi, può capitare di usare una dll scitta in VB anziche in C# o viceversa.

Nonostante la facilità di questa convivenza ci sono aspetti a cui prestare attenzione: gli indicizzatori.
Nel CLR gli indicizzatori non sono altro che propetà con parametri, di cui poi ogni linguaggio da la sua "interpretazione", in C# gli indicizzatori sono accessibili tramite [] (di fatto è come se venisse fatto l'overload di "[]") cosa che lo rende i nutilizzabile da altri linguaggi, ad esempio il VB che usa "()" per specificare gli elementi di una array.
il problema è aggirabile pesonalizzando l'indicizzaotore con un l'attributo:

public class pippo
{...
[System.Runtime.CompilerServices.IndexerName("test")]
public string this[int ts]
{
get 
{......}

}
}

adesso il mio indicizzatore sarà accessibile da VB, ad esempio così:

Dim indicC as new pippo()
Console.WriteLine(indicC.test(2))

in alcuni linguaggi lattributo IndexerName consente di definire più indicizzatori per un tipo, cosa che non è possibile in C# perche non fa riferimento all'indicizzatore per nome.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese