Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jair Humberto

Chamada de método sem passagem de argumentos

Recommended Posts

Galera, eu estou estudando C# e achei um código na internet e nele um trecho que não entendi de jeito nenhum.

a linha onde coloquei o comentário chama um método sem passar argumento algum, alguém poderia me explicar isso?

 

internal class PasswordThunk
{
    private PasswordHandler OnPassword;
    private object arg;

    public Native.pem_password_cb Callback
    {
        get
        {
            if (this.OnPassword == null)
                return null;
            return this.OnPasswordThunk; //<------------------aqui. Esse método possui quatro parâmetros não opcionais, e está logo abaixo
        }
    }

    public PasswordThunk(PasswordHandler client, object arg)
    {
        this.OnPassword = client;
        this.arg = arg;
    }

    internal int OnPasswordThunk(IntPtr buf, int size, int rwflag, IntPtr userdata) // <--------------aqui está o método
    {
        try
        {
            string ret = OnPassword(rwflag != 0, this.arg);
            byte[] pass = Encoding.ASCII.GetBytes(ret);
            int len = pass.Length;
            if (len > size)
                len = size;

            Marshal.Copy(pass, 0, buf, len);
            return len;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
            return -1;
        }
    }
}

O que é isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso se chama eventos :)

 

Porém, este código está bem confuso. Ele está esperando receber o método pelo Construtor, geralmente há get/set para os eventos.

Além disso, falta a definação deste handler:

 

PasswordHandler

 

Mas, para entender melhor, sugiro procurar por eventos:

http://www.akadia.com/services/dotnet_delegates_and_events.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.