gpt4 book ai didi

c# - 使用 base 调用虚方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:06 25 4
gpt4 key购买 nike

关于虚方法:

protected internal virtual void PopulateGetParameters(
int id, List<SqlParameter> parameters)
{
}

在继承基类的类中被重写。令我困惑的是覆盖方法正在回调虚拟方法?

protected override void PopulateGetParameters(
int id, List<SqlParameter> parameters)
{
base.PopulateGetParameters(id, parameters);
parameters.Add(new SqlParameter(this.KeyParamName, id));
}

虚拟方法意味着被覆盖。调用 base.PopulateGetParameters(id, parameters); 的目的是什么?我也无法真正找出实现发生的位置 base.PopulateGetParameters 是一个空的 virtual 方法,并且覆盖出于某种原因调用它。

最佳答案

virtual 关键字仅用于允许 方法被覆盖。

在 C# 中,默认情况下,方法是非虚拟的,您不能覆盖非虚拟方法。这与 Java 相反,默认情况下所有方法都是虚拟的。

在您的情况下,调用方法的基本实现只是什么都不做,因为它是空的。但无论如何,调用它是完全可以的,实际上它很常见。

您可以找到更多信息here .

关于c# - 使用 base 调用虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30628832/

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