如何将此C#变量声明转换为IronPython可以处理的内容?

时间:2012-01-25 10:35:59

标签: c# com ironpython

我不知道这是否只是RTFM的一个简单问题,但是就像我刚才使用静态类型的语言一样... ...

我正在将一些C#代码移植到IronPython,我只是偶然发现了下面这个声明。我不能随意发布实际的代码,所以我会用伪代码写它:

data_type_1 variable_1 = variable_2 as data_type_2;

,其中

variable_2是来自代码前面部分的COM对象,variable_1是一个新变量,data_type_1是一个与COM对象中的数据交互的类。

这是什么意思?我猜它是某种形式的转换。如何将其转换为IronPython可以理解的内容?

3 个答案:

答案 0 :(得分:2)

as运算符是“安全转换”运算符,它将variable_2转换为data_type_2类型。如果转换失败,则不会抛出异常,而是返回null

此外,为了能够将值data_type_2('as'表达式的结果)赋值给data_type_1的变量,data_type_2必须从data_type_1派生(或实现接口) data_type_1)。

答案 1 :(得分:1)

杀了几个小时后,我想我也可以这么简单,但也许不是最漂亮的方式。我只是下载了Visual C#2010 Express(免费版)并编写了一个包含一个仅包含麻烦语句的方法的最小类库。然后我构建了dll,它被迅速导入并在原始的IronPython脚本中使用。

从创意到工作解决方案,只用了10分钟。对微软的称赞,构建一个dll比我想象的要简单得多。

答案 2 :(得分:0)

汉斯已经解释过,as运算符从一种类型转换为另一种类型。这是保持C#编译器满意的必要条件。另一方面,IronPython并不关心 - 您可以在variable_2上调用所需的任何操作,如果它不起作用,您将在运行时收到错误。

所以,简短的版本是IronPython中不需要as,而且该语句可以简化为

variable_1 = variable_2

如果确实需要检查Python对象是否属于特定类型(或子类),请使用isinstance