Предположим, методу передается Тип. Как его можно использовать в приведении или в правой части ключевого слова as.

Документ ... System.Type

    internal static void Test2()
    {
        Computer c0 = new Computer("Model Z", 123);
        Computer c1 = new Computer("Model Z", 456);
        Debug.Assert(c0.Equals(c1));
        object o0 = c0;
        object o1 = c1;
        Debug.Assert(o0.Equals(o1) == false);
        Debug.Assert((o0 as Computer).Equals(o1 as Computer));
        Debug.Assert(((Computer)o0).Equals((Computer)o1));

        Type t = typeof(Computer);
        //Debug.Assert((o0 as t).Equals(o1 as t));
        //Debug.Assert(((t)o0).Equals((t)o1));
        Console.WriteLine("END Test2.");
    }


internal class Computer
{
    private string Description { get; set; }
    private int SerialNumber { get; set; }
    internal Computer(string d, int sn) { this.Description = d; this.SerialNumber = sn; }
    internal bool Equals(Computer other)
    {
        return this.Description.Equals(other.Description);
    }
}
-1
H2ONaCl 22 Фев 2021 в 05:01

1 ответ

Лучший ответ

System.Type - это конструкция / представление типа во время выполнения. Приведение - это конструкция во время компиляции. По сути, вы сообщаете компилятору, как вы хотите интерпретировать память. Итак, то, о чем вы спрашиваете, невозможно.

Если вы действительно хотите, чтобы метод имел тип, рассмотрите возможность использования универсальных типов.

void SomeThing<T>(...)
{
   var t = something as T;
}
3
Daniel A. White 22 Фев 2021 в 02:08