我有一个库,其中ModelElement是一个抽象类,ModelBeam和ModelShell是从ModelElement继承的类。 ModelShell专门有一个名为" mesh"它的值是一个Mesh类。我想知道在检查变量是ModelShell对象后如何从ModelElement变量中检索Mesh。
我希望像上面的代码一样:
public void postTittleClick(View view) {
EditText tittleInput = (EditText) findViewById(R.id.tittleInput);
Intent i = new Intent(this, Postdescription.class);
if (tittleInput.getText().toString().isEmpty()){
// Here you can place code while edit text is empty
}else{
startActivity(i);
}
}
答案 0 :(得分:3)
使用is
关键字然后直接投射:
if (elem is ModelShell)
{
var modelShell = (ModelShell)elem;
foreach (var m in modelShell.mesh)
{
//...
}
}
如果elem
不是ModelShell
,则返回false并且永远不会输入if块。
或者,您可以使用as
关键字。如果您使用正确的类型进行投射,则会执行强制转换,否则会生成null
。因此,在转换之后,您需要检查变量是否为null
。
var modelShell = elem as ModelShell;
if (modelShell != null)
{
foreach (var m in modelShell.mesh)
{
//...
}
}
答案 1 :(得分:0)
你可以试试这个..
if(elem instanceof ModelBeam){
}else if(elem instanceof ModelShell){
}
答案 2 :(得分:0)
尝试以下代码。基本上,使用运算符 is 并转换为ModelShell应该可以正常工作。
foreach (ModelElement elem in model.elems)
{
if (elem is ModelBeam)
{
conect.Add(elem._node_inds);
}
if (elem is ModelShell)
{
Mesh mesh = ((ModelShell)elem).mesh;
foreach (Mesh m in mesh)
{
conect.Add(m._node_inds);
}
}
}