如何从派生类获取基类实例

2024-01-05

我不知道这是否可能,但我正在尝试从派生类获取基类实例。在 C# 中,我可以使用base关键字来访问基类的属性和方法(当然),但我想使用base本身。尝试这样做会导致“在此上下文中使用关键字‘base’无效” error.

示例代码

public class SuperParent
{
    public int SPID;

    public SuperParent()
    {
    }
}

public class SubChild : SuperParent
{
    public SubChild(int pSPID)
    {
        base.SPID = pSPID;
    }

    public int BaseSPID
    {
        get
        {
            SuperParent sp = base;
            return sp.SPID;
        }
    }
}

如果您正在使用派生类的实例,则没有base instance。 一个例子:

class A
{
    public void Foo() { ... }
}

class B : A
{
    public void Bar() { ... }
}

内有什么是不可能的B:

public void Bar()
{
    // Use of keyword base not valid in this context
    var baseOfThis = base; 
}

你可以这样做:

public void Bar()
{
    base.Foo();
}

你可以添加另一种方法,例如

public A GetBase()
{
    return (A)this;
}

然后你就可以

public void Bar()
{ 
    var baseOfThis = GetBase();
    // equal to:
    baseOfThis = (A)this;
}

So this GetBase()方法可能就是你想要的。

要点是:如果你有一个实例B,它继承了所有属性和不可重写的行为A,但它不包含以下实例B它保存对实例的(隐藏但自动的)引用A。你可以投射你的B实例到A,但它仍然是一个实例B.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从派生类获取基类实例 的相关文章

随机推荐

  • ASP.NET MVC 2 - ViewModel 前缀

    我想在我的视图中使用 RenderPartial 两次 并关联不同的模型 问题是两个模型中都存在某些属性 昵称 密码 它们没有前缀 因此即使 id 或名称在输出中也是相同的 现在 如果我的昵称或密码有模型错误 两个字段都会突出显示 主视图
  • 有没有办法使用 ARKit 加载 FBX 文件?

    在我的项目中 我使用 ARKit 定位 3D 文件 我能够加载 dae and obj格式模型 有什么办法可以加载 fbx files Updated 2023 年 1 月 14 日 关于信息 FBX你可以找到转换HERE https st
  • 代码存储库。有什么好的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Mediaplayer进度更新到seekbar不顺利?

    我正在开发一个带有录音机和播放器的应用程序 我正在使用媒体播放器播放录制的 wav 文件 同时我想更新到搜索栏 一切工作正常 但我的问题是媒体播放器进度更新到搜索栏并不顺利 如果我们正在播放一个小文件 搜索栏的拇指会在几秒钟或几秒钟内跳跃
  • 准备好的语句或可调用语句

    我试图理解之间的区别PreparedStatements CallableStatements我没能得到它 所以请任何人都可以转换以下内容sql查询至CallableStatement 我知道如何将 Statement 转换为Prepare
  • 如何在方案中设置默认或可选参数?

    我试图弄清楚如何在方案中设置默认或可选参数 我试过了 define func a optional b a b 但我找不到方法来检查是否b是一个默认参数 因为只需调用 func 1 2 会给出错误 Error number required
  • 在 Visual Studio 中显示文件夹

    我有一个包含一组第三个 dll 的文件夹 我想将其显示在 Visual Studio 中 原因是我正在使用 VisualSvn 并且我希望能够看到这些内容何时从 Visual Studio 中更新 如果启用 显示所有文件 选项 通过从 项目
  • Matplotlib设置单独的刻度样式

    简单而直接的问题 假设我已经设置了以下 X 个刻度 plt xticks 5 4 3 2 1 0 1 2 3 4 5 是否可以将 x 5 处的刻度设置为绿色 将 x 0 处的刻度设置为不同的线条 实线 例如 样式 并将 x 5 处的刻度设置
  • Web 应用程序的可扩展性和性能、方法?

    您使用了哪些方法和技术来成功解决网站的可扩展性和性能问题 我是一名 ASP NET Web 开发人员 正在探索使用 WCF 和 SQL 集群进行 NET 远程处理 并且很好奇存在哪些其他方法 例如 云 在哪种情况下 您会应用各种方法 例如
  • MVC 3 异常:参数字典包含方法“System.Web.Mvc”的不可空类型“System.Int32”的参数“id”的空条目

    我的应用程序似乎运行良好 但我不断在 log4net 日志中收到这些异常 The parameters dictionary contains a null entry for parameter id of non nullable ty
  • AWS ElasticBeanstalk Amazon Linux 2 .platform 文件夹不复制 NGINX conf

    我已使用 Amazon Linux 2 迁移到 ElasticBeanstalk 但在覆盖默认 nginx conf 文件时遇到问题 我正在关注AL2 docs https docs aws amazon com elasticbeanst
  • 什么是现代C++? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有时会阅读有关 C 为何好或坏的讨论 有时其中一个论点会引用当今的现代 C 与旧的 C 有很大不同 我想知道到底有什么区别 现代 C 的示例是
  • 内容提供商 INSTALL_FAILED_CONFLICTING_PROVIDER(将内容提供商作为单独的 apk 安装)

    我有两个使用相同内容提供程序的应用程序 但我无法在两个应用程序中放置相同的内容提供程序 它显示 INSTALL FAILED CONFLICTING PROVIDER 错误 因此 我将我的内容提供程序放在第三个 apk 中 并从两个应用程序
  • spring-boot - 如何在环境或系统属性中指定application.properties的路径?

    如果我想运行 spring boot 应用程序 并且想在不同路径中使用差异 application properties 而不是使用配置文件 我如何指定路径application properties 如果要在不同路径下使用不同的appli
  • 尝试模拟滚轮事件 [Firefox]

    为了澄清我的示例 我想在打开的窗口中心模拟滚动事件 这应该会影响给定页面上合理的主要滚动元素 这是一些相关页面 https developer mozilla org en US docs Web API WheelEvent WheelE
  • Clojure 警告:“结果集序列已存在于 clojure.core 中”

    我是 Clojure 的新手 正在使用 Noir 框架构建一个 Web 应用程序 与 Compojure 非常相似 事实上我认为它是具有不同请求处理程序层的 Compojure 导入 JDBC 库时收到警告 WARNING resultse
  • php从邮件正文中提取文本/纯文本

    这是 imap php 库读取的一封邮件的内容 我会提取内容类型 text plain 字符集 ISO 8859 1 文本 data 10 10 2011 regione pt provincia pistoia nome nome tel
  • Cake PHP 3 debug_kit 面板

    安装 CakePHP3 版本后 3 6 2 debug kit不显示面板 在日志文件中 警告 DebugKit 正在禁用自身作为您的主机newtest my不在已知的顶级域安全列表中 localhost dev invalid test e
  • 如何在seaborn python中合并两个relplot?

    我想使用 sns relplot 在单个图中绘制数据帧的两个数据列 数据框如下所示 index x axis col1 col2 group group2 0 0 27 26 A C 1 1 45 27 B D 2 2 48 22 A C
  • 如何从派生类获取基类实例

    我不知道这是否可能 但我正在尝试从派生类获取基类实例 在 C 中 我可以使用base关键字来访问基类的属性和方法 当然 但我想使用base本身 尝试这样做会导致 在此上下文中使用关键字 base 无效 error 示例代码 public c