我正在编写一个调用COM组件的C#程序。 COM方法接受对象类型的参数,我试图找到一种干净的方式来调用函数。
假设我想调用一个带有COMObject.GetNodeList(ref object nNodeList)
签名的方法,它返回一个节点ID数组(即nNodeList的数组为int
),有什么方法我可以调用函数并直接传递int[]
参数?
目前我必须编写如下代码:
private void Update()
{
object ids = null;
ids = new object[this.OSG.GetNodeCount()];
this.OSG.GetNodeList(ref ids);
for (int i = 0; i <= ((int[])ids.Count() - 1; i++)
this.Add(ids[i]);
}
或编译器因类型不匹配而抱怨。我真正想写的是:
private void Update()
{
int[] ids = null;
ids = new int[this.OSG.GetNodeCount()];
this.OSG.GetNodeList(ref ids);
for (int i = 0; i <= ids.Count() - 1; i++)
this.Add(ids[i]);
}
所以我不必一直进行类型转换。
VB.NET允许我这样做,所以肯定有一种方法可以在C#中做到这一点吗?
答案 0 :(得分:0)
private void Update()
{
dynamic ids;
ids = new int[this.OSG.GetNodeCount()];
this.OSG.GetNodeList(ref ids);
for (int i = 0; i <= ids.Length - 1; i++)
this.Add(ids[i]);
}
显然缺乏智能感觉有点无聊。一旦VB.NET比C#更好用?