C# - 不同类型对象的列表

2023-12-01

我想创建一个列表,其中包含游戏中生成的所有不同单位的所有对象,但它们并不都是同一类。如果有帮助的话,它们都是主单元类的子类。但基本上我有一个具有基本功能的主要单位类,然后有更多的剑士、长枪兵等,我希望能够将所有不同的类型放在一个列表中,以便能够更轻松地管理它们。那可能吗?


是的,这是可能的。

正如罗布在他的评论中所说,你需要做一个List<SharedBaseClass>.

var someList = new List<SharedBaseClass>();

当您尝试与列表中的特定元素交互时,您将需要转换回正确的子类:

// throws an exception if type wrong
var someElement = (desiredSubClass) someList[someElementIndex];

// return null if type wrong
var someElement = someList[someElementIndex] as desiredSubClass;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# - 不同类型对象的列表 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C# 动态/expando 对象的深度/嵌套/递归合并

    我需要在 C 中 合并 2 个动态对象 我在 stackexchange 上找到的所有内容仅涵盖非递归合并 但我正在寻找能够进行递归或深度合并的东西 非常类似于jQuery 的 extend obj1 obj2 http api jquer
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • dplyr 创建因子水平的合计百分比

    如何使用 dplyr 为每个州创建因子变量水平的比例 例如 我想添加一个变量来指示数据框中每个州内女性的百分比 gen data state lt rep c rep Idaho 10 rep Maine 10 2 student id l
  • size_t 和 unsigned int 之间的区别?

    我很困惑size t 我在互联网上搜索过 到处都提到了这一点size t是无符号类型 因此它只能表示非负值 我的第一个问题是 如果它只用来表示非负值 为什么我们不使用unsigned int代替size t 我的第二个问题是 是size t
  • SqlDependency.Start(connectionString) 每次都返回 false

    我设置了访问数据库的权限 use DbName GRANT SUBSCRIBE QUERY NOTIFICATIONS TO dbuser use DbName GRANT SELECT ON OBJECT schema tableName
  • w3c document.forms[0].fieldname 等效项

    我一直在使用 document forms 0 fieldname value 从表单中获取 javascript 中的值 但我想使用名称来引用该字段而不是 0 这些天以来等效的是什么
  • 在 MarkLogic 8 中调用具有来自其余端点的依赖项的 xquery 库

    我们正在从 MarkLogic 6 升级到 8 并且在调用库模块时遇到了一些问题 我们有 xquery 库模块 可以从自定义 REST 扩展和非 REST xquery 调用 马克逻辑公司文档表示 REST 端点可以使用通过新 ext 端点
  • 程序化表单提交

    我想抓取网页的内容 内容是在该网站上填写并提交表格后生成的 我已经阅读了如何抓取最终结果内容 网页 但如何以编程方式提交表单 我正在使用 python 并读到我可能需要获取带有表单的原始网页 解析它 获取表单参数 然后执行 X 有人能指出我
  • 如何在应用程序中将粤语设置为语音搜索语言?

    我当前的代码在使用 ZH ISO 代码表示普通话时工作正常 但不适用于粤语 这是下面的代码 Intent i new Intent RecognizerIntent ACTION RECOGNIZE SPEECH String myLang
  • 无法在 Javascript 中动态添加项目到 Owl Carousel

    我正在尝试动态地将项目添加到猫头鹰旋转木马 我是这样做的 HTML div class owl carousel lesson carousel div class item item logo div class product item
  • SpringBoot 中的 javax.validation.constraints.Email

    我有一个经过此验证的 bean Email message Email is not valid regexp a z0 9 a z0 9 x01 x08 x0b x0c x0e x1f x21 x23 x5b x5d x7f x01 x0
  • Spring @ResponseBody 返回 JSON,但缺少键

    我正在以 JSON 格式返回 SQL 查询的结果 结果正常 但缺少键 查询中指定的列 我是否必须将类与查询关联才能获取键名称 我不认为这是 Jackson 映射 因为当我显式使用它时 对象映射器而不是让 Spring 在 ResponseB
  • 来自表视图控制器的多个 Segues

    我有一个小型应用程序 它对初始表格视图使用多个部分布局 一个部分显示 Twitter 的最新趋势 另一部分显示 Twitter 的最新故事 当我单击趋势列表中的某个项目时 我会转换到一个新的表视图控制器 该控制器显示有关该趋势的最新推文 在
  • Bash 条件管道

    如果命令返回 true 如何通过管道传输命令的输出 function open TEMPFILE mktemp u if gpg2 quiet decrypt batch passphrase 2 1 2 gt TEMPFILE then
  • 与 jquery close() 等效的 JavaScript 是什么?

    我有以下代码 它是用 DOM API 而不是 jquery 编写的 我不知道为什么 它位于用于 jquery 表单验证的提交函数内 我需要更改 parentNode 部分 以便 最接近 而不是 parent 我不擅长 JavaScript
  • Nimbus 外观和感觉调整菜单栏的颜色

    我正在尝试调整 Nimbus 外观和感觉的颜色 但它只能部分工作 特别是我在调整菜单栏的颜色时遇到问题 这是一个运行示例 import java awt Color import java awt Dimension import java
  • 使用 Java 8 IntStream 计算阶乘?

    我对 Java 8 和 lambda 表达式比较陌生Stream 我可以使用计算阶乘for循环或递归 但有没有办法使用IntStream计算一个数的阶乘 即使阶乘在整数范围内我也很好 我通读了IntStream文档在这里 http docs
  • 执行中的 Hadoop 错误:映射中的键类型不匹配:预期为 org.apache.hadoop.io.Text,已收到 org.apache.hadoop.io.LongWritable

    我正在 Hadoop 上实现 PageRank 算法 正如标题所示 我在尝试执行代码时遇到了以下错误 映射中的键类型不匹配 预期为 org apache hadoop io Text 已收到 org apache hadoop io Lon
  • 从表中获取 blob 图像并使用 php sqlite3 显示它

    我知道这个问题已经被问过很多次了 但我无法使用其中任何一个来解决这个问题 我是 sqlite 的新手 无法理解我做错了什么 我正在尝试什么 我正在尝试制作个人资料查看页面 我可以从我的 sqlite 数据库中获取所有详细信息 但无法显示我的
  • 在 Windows 命令行中获取接口名称、IP 和 MAC

    我想获取机器上所有接口 IP 和 MAC 地址的列表 我有很多机器 大约 600 台 可以获取此信息 但我无法在设备上使用批处理文件 我想发送命令并返回回显的输出 我需要的所有信息都在ipconfig all但我不知道如何用 for 循环来
  • 模拟 Java 枚举以添加值来测试失败情况

    我有一个enum或多或少像这样切换 public static enum MyEnum A B public int foo MyEnum value switch value case A return calculateSomethin
  • C# - 不同类型对象的列表

    我想创建一个列表 其中包含游戏中生成的所有不同单位的所有对象 但它们并不都是同一类 如果有帮助的话 它们都是主单元类的子类 但基本上我有一个具有基本功能的主要单位类 然后有更多的剑士 长枪兵等 我希望能够将所有不同的类型放在一个列表中 以便