 |
 |
Delegados em C#. Rede:
|
Se n�s olharmos C++ h� uma caracter�stica chamada fun��o da rechamada. Esta caracter�stica usa ponteiros �s fun��es pass�-las como par�metros a outras fun��es. O delegado � uma caracter�stica similar mas � mais tipo cofre, que est� porque um contraste stark com os ponteiros da fun��o de C++. Um delegado pode prender reference/s a um mais mais fun��es e invoc�-lo concoante que needed.
|
Um delegado necessita seus par�metros do m�todo o nome e (vari�veis da entrada e de sa�da) quando n�s criamos um delegado. Mas o delegado n�o � uma constru��o aut�noma. � uma classe. Todo o delegado est� herdado da classe baixa do delegado da biblioteca da classe de .NET quando se declara. Isto pode ser de das duas classes de System.Delegate ou de sistema. MulticastDelegate.
|
Se o delegado contiver um tipo do retorno de v�cuo, ent�o � aliased automaticamente ao tipo de System.MulticastDelegate. Isto pode suportar fun��es m�ltiplas com um operador de +=. Se o delegado contiver um tipo do retorno non-vago ent�o � aliased ao sistema. A classe e do delegado n�o podem suportar m�todos m�ltiplos.
|
Deixar-nos ter um olhar no seguinte c�digo da amostra.
|
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;
}
|
|
Agora, n�s temos uma classe nomeada Figura e tem tr�s campos confidenciais que se usam armazenar a posi��o e os tr�s m�todos para inverter esta posi��o por cada linha central. Na classe principal n�s declaramos o delegado como segue:
|
public delegate void FigureDelegate();
|
|
E agora na fun��o principal n�s devemos us�-la gostamos disto:
|
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;
|
|
Neste exemplo n�s criamos tr�s delegados do tipo de FigureDelegate e unimos a estes elementos nossos tr�s m�todos da figura classe. Agora cada delegado mantem o endere�o da fun��o unida. A �ltima linha do c�digo � muito interessante, aqui n�s criamos um delegado do tipo baixo (MulticastDelegate) e unimos tr�s de nossos delegados j� criados. Enquanto todos nossos m�todos s�o do tipo do retorno do v�cuo s�o automaticamente do tipo MutlticastDelegate e um MulticastDelegate pode suportar o invocation m�ltiplo dos m�todos tamb�m. Daqui n�s podemos escrever
|
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
|