Entendendo o uso de eventos C # do objeto emissor

Eu sou razoavelmente novo em c # como uma linguagem (vindo de um fundo C ++) e atualmente estou no processo de escrever um aplicativo que faz uso de uma API orientada a eventos.

Primeiramente, isso consiste em registrar manipuladores de evento / resposta e iniciar monitores de eventos, em seguida, lidar com esses eventos / respostas asrícronos.

A coisa que eu estou tendo um pouco de dificuldade em entender é o uso do objeto emissor.

O que eu gostaria de usar é passar um identificador para um objeto de classe que tenho com várias estruturas e dados ao fazer uma solicitação (ou configurar um monitor). E então, na resposta que está sendo recebida / no evento que está sendo levantado, eu posso pegar o objeto remetente, lançá-lo de volta ao tipo de classe esperada e acessar membros, fazer outras alterações, etc., tratando-o como se fosse apenas um ponteiro para os dados originais (o que eu espero que seja?)

Então, a minha pergunta é realmente, como eu estou passando um objeto de classe na minha solicitação, isso será efetivamente uma referência, ou será copiado em algum lugar ao longo da linha por valor, pois na verdade é apenas um objeto genérico e acabarei com um cópia vazia do meu objeto de classe no evento?

Ou a terceira opção que eu estou completamente no caminho errado aqui e deveria esquecer a coisa toda? :)

Problema é o meu cérebro ainda trabalhando no modo de ponteiros eu acho ...

questionAnswers(4)

yourAnswerToTheQuestion