gpt4 book ai didi

c# - 可以静态分析重写的方法吗?

转载 作者:行者123 更新时间:2023-11-30 16:27:26 24 4
gpt4 key购买 nike

鉴于这种情况:

interface Interfaz 
{
void M1();
}

abstract class ClaseAbstracta : Interfaz
{
public void M1() { }
public abstract Boolean M2();
}

class ClaseConcreta : ClaseAbstracta
{
public override Boolean M2() { return false; }
public virtual void M3(Int32 i) { }
public void M4() { }
}

我也是:

ClaseConcreta concretaCast = (ClaseConcreta) abst;

可以静态分析concretaCast.M2()吗?

首先,它有 override 所以它看起来好像不能,但是当你看到 M2() 它实际上是具体的实现。

那么这是静态可分析的还是每次覆盖时都必须在运行时动态地进行?

最佳答案

我怀疑这可以在一般情况下进行静态分析。考虑:

class ClaseConcreta2 : ClaseConcreta
{
public override Boolean M2() { return true; }
}

void Main()
{
var x = new ClaseConcreta2();
DoSomething(x);
}

void DoSomething(ClassAbstracta abst)
{
ClaseConcreta concretaCast = (ClaseConcreta) abst;
// okay, so it's a ClaseConcreta, but what kind?
}

关于c# - 可以静态分析重写的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7907924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com