 |
 |
Delegati in C#. Rete:
|
Se guardiamo C++ ci � una caratteristica denominata funzione di chiamata ripetuta. Questa caratteristica usa gli indicatori alle funzioni per passarla come parametri ad altre funzioni. Il delegato � una caratteristica simile ma � pi� tipo cassaforte, che si leva in piedi poich� un contrasto rigido con gli indicatori di funzione di C++. Un delegato pu� tenere reference/s ad uno pi� pi� funzioni ed invocarlo man mano che necessario.
|
Un delegato ha bisogno dei relativi parametri del metodo del nome e (variabili di uscita e dell'input) quando generiamo un delegato. Ma il delegato non � una costruzione autonoma. � un codice categoria. Tutto il delegato � ereditato dal codice categoria basso del delegato della biblioteca del codice categoria di .NET quando � dichiarato. Ci� pu� provenire da dei due codici categoria da System.Delegate o dal sistema. MulticastDelegate.
|
Se il delegato contiene un tipo di ritorno di vuoto, allora � automaticamente aliased al tipo di System.MulticastDelegate. Ci� pu� sostenere le funzioni multiple con un operatore di +=. Se il delegato contiene un tipo di ritorno non-vuoto allora � aliased al sistema. Il codice categoria ed esso del delegato non possono sostenere i metodi multipli.
|
Abbiamo uno sguardo al seguente codice del campione.
|
class Figure
{
public Figure(float a, float b, float c)
{
m_xPos = a;
m_yPos = b;
m_zPos = c;
}
public void InvertX()
{
m_xPos = - m_xPos;
}
public void InvertY()
{
m_yPos = - m_yPos;
}
public void InvertZ()
{
m_zPos = - m_zPos;
}
private float m_xPos = 0;
private float m_yPos = 0;
private float m_zPos = 0;
}
|
|
Ora, abbiamo un codice categoria chiamato Figure ed ha tre campi riservati che usano immagazzinare la posizione e tre metodi per invertire questa posizione da ogni asse. Nel codice categoria principale dichiariamo il delegato come segue:
|
public delegate void FigureDelegate();
|
|
Ed ora nella funzione principale dovremmo usarli gradiamo questo:
|
Figure figure = new Figure(10,20,30);
FigureDelegate fx = new FigureDelegate(figure.InvertX);
FigureDelegate fy = new FigureDelegate(figure.InvertY);
FigureDelegate fz = new FigureDelegate(figure.InvertZ);
MulticastDelegate f_del = fx+fy+fz;
|
|
In questo esempio generiamo tre delegati del tipo di FigureDelegate e fissiamo a questi elementi i nostri tre metodi dalla figura codice categoria. Ora ogni delegato mantiene l'indirizzo della funzione fissata. L'ultima linea del codice � molto interessante, qui generiamo un delegato di tipo basso (MulticastDelegate) e fissiamo tre dei nostri delegati gi� generati. Mentre tutti i nostri metodi sono del tipo di ritorno di vuoto sono automaticamente di tipo MutlticastDelegate e un MulticastDelegate pu� sostenere il invocation multiplo di metodi anche. Quindi possiamo scrivere
|
Figure figure = new Figure(10,20,30);
FigureDelegate fMulti = new FigureDelegate(figure.InvertX);
fMulti += new FigureDelegate(figure.InvertY);
fMulti();
|
|
 |
 |
Keywords Delegates in C# .Net, c# c++, c# dotnet, c# type, c# datagrid, c# object, delegates vb,
c# value, visual c#, c# method, c# control, c# example, vb c#, system c#, c# application,
c# sample, c# project, c# form, convert c#, csharp c#, custom c#, add c#, c# create
|