是否可以从它自己的类中更改对象的类型?

Ale*_*lex 0 .net c# types casting

我知道这听起来不太重要,因为它可以在类外部进行更改,但是我可以说我有一个从它继承的正方形和三角形类的形状类.

如果我创建一个明显= 4的SideCount属性的新方块,那么如果我将它的SideCount更改为3,我可以将代码放入SideCount的Setter中,将方形对象转换为三角形吗?

上面的例子听起来毫无意义,但这只是我想要解决的原则吗?

如果语言不同我想在c#中做到这一点

Jam*_*iec 8

不是直接没有,一个实例Square不能改为实例Triangle.

你可以有一个方法,它返回Shape基类Shape 上定义的实例:

public abstract class Shape
{
    public Shape Mutate(int numberOfSides)
    {
        // over simplified example:
        if(numberOfSides == 3)
           return new Triangle();
    }
}

public class Triangle : Shape {}
public class Square : Shape {}
Run Code Online (Sandbox Code Playgroud)

用法

var squ = new Square();
var triangle = squ.Mutate(3);
Run Code Online (Sandbox Code Playgroud)