C#, ¿qué significa la firma en el delegado?
Los siguientes son los métodos definidos por los tres ministros en función de la firma delegada. Tenga en cuenta que la firma delegada que definimos es para devolver MinisterReturns, pero los siguientes tres ministros devuelven cosas diferentes.
¿Por qué es esto posible?
Analizaremos los siguientes resultados después de ejecutar:
class MinisterA
{
public static goldCoin MinisterAOneYearDo()
{
monedas goldCoin = new goldCoin(100);
Console.WriteLine("Soy el Ministro A, le traje 100 monedas de oro al rey.") ;
devolver monedas;
}
}
clase MinistroB
{
público bienes estáticos MinisterBOneYearDo()
{
bienes BIENES = bienes nuevos();
Console.WriteLine("Soy el Ministro B, se lo doy al rey Trajo productos exquisitos que no están disponibles en el país.");
devolver MERCANCÍAS;
}
}
clase MinistroC< /p >
{
monedas de oro estáticas públicas MinisterCOneYearDo()
{
monedas goldCoin = nuevas monedas de oro(10);
Console .WriteLine("Soy el Ministro C y le llevé las 10 monedas de oro originales al rey."); > }
clase Programa
{
static void Main(string[] args)
{
//Entendamos la orden del rey, que en realidad es la firma de nuestra encomienda
//delegate MinisterReturns MinisterOneYearDo();
Console.WriteLine("La orden del rey:", king .KingsOrder);
//El Ministro A pasa el método escrito por la firma delegada a otro método para su procesamiento
king.handleMinisterOneyearDo(MinisterA.MinisterAOneYearDo);
Console.ReadLine();
//El Ministro B pasa el método escrito por la firma delegada a otro método para su procesamiento
king.handl
eMinisterOneyearDo(MinisterB.MinisterBOneYearDo);
Console.ReadLine();
//El Ministro C pasa el método escrito por la firma delegada a otro método para su procesamiento
king.handleMinisterOneyearDo(MinisterC.MinisterCOneYearDo);
Console.ReadLine();
}
} Como se mencionó anteriormente, ¿por qué regresa el método de implementación específico? ¿Está bien si el valor de es diferente del valor devuelto por el delegado? De hecho, se utiliza la covarianza en la delegación. El siguiente es el análisis de la covarianza en la delegación citado de MSDN. Cuando el tipo de retorno del método de delegación tiene un mayor grado de derivación que la firma de la delegación, se denomina método de delegación covariante. Debido a que el tipo de retorno de un método es más específico que el tipo de retorno de la firma delegado, se puede convertir implícitamente. De esta forma el método se puede utilizar como delegado. La covarianza permite crear métodos delegados que pueden ser utilizados tanto por clases como por clases derivadas.