gpt4 book ai didi

c# - 从抽象类变量中检索非抽象类属性值

转载 作者:行者123 更新时间:2023-11-30 21:52:46 24 4
gpt4 key购买 nike

我有一个库,其中 ModelElement 是一个抽象类,ModelBeam 和 ModelShell 是从 ModelElement 继承的类。 ModelShell 专门有一个名为“mesh”的属性,它的值是一个 Mesh 类。我想知道如何在检查变量是 ModelShell 对象后从 ModelElement 变量中检索 Mesh 。

我想要类似上面的代码:

foreach (ModelElement elem in model.elems)
{
if (elem.GetType() == typeof(ModelBeam))
{
conect.Add(elem._node_inds);
}
if (elem.GetType() == typeof(ModelShell))
{
Mesh mesh = elem.mesh;
foreach (Mesh m in mesh)
{
conect.Add(m._node_inds);
}
}
}

最佳答案

使用 is 关键字,然后直接转换:

if (elem is ModelShell)
{
var modelShell = (ModelShell)elem;
foreach (var m in modelShell.mesh)
{
//...
}
}

如果 elem 不是 ModelShell 这将返回 false 并且永远不会进入 if block 。

或者,您可以使用 as 关键字。如果您使用正确的类型进行转换,则此方法会执行转换,否则会导致 null。因此,在转换之后,您需要检查变量是否为 null

var modelShell = elem as ModelShell;
if (modelShell != null)
{
foreach (var m in modelShell.mesh)
{
//...
}
}

关于c# - 从抽象类变量中检索非抽象类属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34473469/

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