cast ясный и implito в c#

у меня есть следующий код: который этой книги https://goalkicker.com/CSharpBook/CSharpNotesForProfessionals.pdf на странице 24

public class BinaryImage
{
    private bool[] _pixels;
    public static implicit operator ColorImage(BinaryImage im)
    {
        return new ColorImage(im);
    }

    public static explicit operator bool[](BinaryImage im)
    {
        return im._pixels;
    }
}

//Allowing the following cast syntax:
var binaryImage = new BinaryImage();
ColorImage colorImage = binaryImage; // implicit cast
bool[] pixels = (bool[])binaryImage; // explicit cast

Мое сомнение такое, как он реализует cast с 2 различными классами

ColorImage colorImage = binaryImage; 
bool[] pixels = (bool[])binaryImage;

Как я понимаю, чтобы делать пробы, классы должны получать в наследство общего класса.

1
задан 10.08.2019, 00:58
1 ответ

Ты забываешь прочитать объяснение, которое пробует дать тебе в этом secion libreo, если ты читаешь снова, ты увидишь, что он упоминает об использовании explicit и implicit, когда он показывает линию:

public static <implicit/explicit> operator <ResultingType>(<SourceType> myType)

именно поэтому в коде этого класса определи

public static implicit operator ColorImage(BinaryImage im){...

и

public static explicit operator bool[](BinaryImage im){...

, если ты помещаешь breakpoint внутри этих метод static, края, которые, как это был cast, которые приложение вводило в компьютер в один или другой, это там, где делается превращение типов

, Идет, если он получает в наследство или нет другого класса, это не применяется в этом случае, потому что он определяет эти методы static с explicit и implicit объявляя, как превращается инстанция этого класса в другой тип информации

4
ответ дан 01.12.2019, 22:19
  • 1
    пойдите сейчас уже я понял, эта часть была основной для этого < ResultingType> –  hubman 10.08.2019, 07:03

Теги

Похожие вопросы