у меня есть следующий код: который этой книги 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;
Как я понимаю, чтобы делать пробы, классы должны получать в наследство общего класса.
Ты забываешь прочитать объяснение, которое пробует дать тебе в этом 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
объявляя, как превращается инстанция этого класса в другой тип информации