如何将这个C#变量声明转换为IronPython可以处理的东西?

如何将这个C#变量声明转换为IronPython可以处理的东西?,c#,com,ironpython,C#,Com,Ironpython,我不知道这是否是RTFM的一个简单问题,但请耐心听我说,就像刚才我使用的静态类型语言一样 我正在将一些C#代码移植到IronPython,我只是偶然发现了下面的这句话。我无权发布实际的代码,因此我将用伪代码代替: data_type_1 variable_1=变量_2作为data_type_2 在哪里 variable_2是来自代码早期部分的COM对象,variable_1是新变量,data_type_1是与COM对象中的数据交互的类 这是什么意思?我猜这是某种形式的转换。如何将其转换为Iron

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

我正在将一些C#代码移植到IronPython,我只是偶然发现了下面的这句话。我无权发布实际的代码,因此我将用伪代码代替:

data_type_1 variable_1=变量_2作为data_type_2

在哪里

variable_2
是来自代码早期部分的COM对象,
variable_1
是新变量,
data_type_1
是与COM对象中的数据交互的类


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

由于
运算符是“安全强制转换”运算符,它将
变量\u 2
转换为类型
数据类型\u 2
。如果转换失败,它不会抛出异常,而是返回
null


此外,为了能够将
data\u type\u 2
(as表达式的结果)的值分配给
data\u type\u 1
,该data\u type\u 2必须从data\u type\u 1派生(或实现接口data\u type\u 1)。

as
操作符是一个“安全转换”操作符,它将
变量_2
转换为类型
数据类型_2
。如果转换失败,它不会抛出异常,而是返回
null


此外,为了能够将
data\u type\u 2
(as表达式的结果)的值分配给
data\u type\u 1
,该data\u type\u 2必须从data\u type\u 1派生(或实现接口data\u type\u 1).

在消磨了几个小时之后,我想我还是用最简单但也许不是最漂亮的方式来做吧。我只是下载了visualc#2010express(免费版),并编写了一个最小类库,其中包含一个只包含麻烦语句的方法。然后我构建了dll,该dll被及时导入并用于最初的IronPython脚本中


从想法到可行的解决方案只需10分钟。感谢微软,构建dll比我想象的要简单得多。

在消磨了几个小时之后,我想我还是用简单但也许不是最漂亮的方法来实现它为好。我只是下载了visualc#2010express(免费版),并编写了一个最小类库,其中包含一个只包含麻烦语句的方法。然后我构建了dll,该dll被及时导入并用于最初的IronPython脚本中


从想法到可行的解决方案只需10分钟。感谢微软,构建dll比我想象的要简单得多。

正如Hans已经解释的那样,
As
操作符可以从一种类型转换为另一种类型。这对于让C#的编译器感到高兴是必要的。另一方面,IronPython并不在意——您可以对
变量_2
调用任何需要的操作,如果它不起作用,您将在运行时收到一个错误

因此,简短的版本是,
as
在IronPython中是不必要的,并且该语句可以简化为

variable_1 = variable_2

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

正如Hans已经解释的那样,
As
操作符将从一种类型转换为另一种类型。这对于让C#的编译器感到高兴是必要的。另一方面,IronPython并不在意——您可以对
变量_2
调用任何需要的操作,如果它不起作用,您将在运行时收到一个错误

因此,简短的版本是,
as
在IronPython中是不必要的,并且该语句可以简化为

variable_1 = variable_2

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

Ok,我猜对了。你知道如何在IronPython中进行同样的转换吗?@c00kiemonster-对不起,我只知道C端。我希望你能自己把我的解释翻译成IronPython。好吧,事实证明我猜对了。你知道如何在IronPython中进行同样的转换吗?@c00kiemonster-对不起,我只知道C端。我希望您能自己将我的解释翻译成IronPython。由于
variable 2
是一个很难使用的讨厌的COM对象,这个特定的示例变得更加困难。我很高兴我经历了这些问题。否则我永远不会意识到自己定制C#DLL有多么容易。这可能有一天会非常有用……由于
变量2
是一个令人讨厌的COM对象,很难使用,因此这个特定的示例变得更加困难。我很高兴我经历了这些问题。否则我永远不会意识到自己定制C#DLL有多么容易。总有一天会很有用的。。。