Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IronPython与C#用于小型项目_C#_.net_Python_Ironpython - Fatal编程技术网

IronPython与C#用于小型项目

IronPython与C#用于小型项目,c#,.net,python,ironpython,C#,.net,Python,Ironpython,我目前在大多数编程项目中使用Python(主要是快速开发小型程序和原型)。我想花时间学习一种语言,这种语言使我能够在有机会时灵活地使用各种Microsoft工具和API。我正试图在IronPython和C#之间做出选择。由于Python是我最喜欢的编程语言(主要是因为它简洁明了的语法),IronPython听起来是理想的选择。然而,读了一点之后,我有几个问题 对于那些使用过IronPython的人来说,经典Python从哪里结束,.NET从哪里开始还不清楚吗?例如,.NET库和Python标准库

我目前在大多数编程项目中使用Python(主要是快速开发小型程序和原型)。我想花时间学习一种语言,这种语言使我能够在有机会时灵活地使用各种Microsoft工具和API。我正试图在IronPython和C#之间做出选择。由于Python是我最喜欢的编程语言(主要是因为它简洁明了的语法),IronPython听起来是理想的选择。然而,读了一点之后,我有几个问题

对于那些使用过IronPython的人来说,经典Python从哪里结束,.NET从哪里开始还不清楚吗?例如,.NET库和Python标准库之间的功能似乎有很大的重叠,因此当我需要执行字符串操作或解析XML时,我不清楚应该使用哪个库。此外,我不清楚在代码中何时应该使用Python和.NET数据类型。例如,我将在代码中使用以下哪项

d = {} 

(顺便说一句,如果我做了很多类似后者的事情,我可能会失去一些简洁性,这就是为什么我首先喜欢Python的原因。)


另一个问题是,许多微软的开发工具,如.NET CF和Xbox XNA,在IronPython中都不可用。还有更多的情况下IronPython不能让我完全接触到C#?

我已经用IronPython构建了一个与C#绑定的大型应用程序

它几乎完全无缝。从真正的“python”感觉来看,IronPython中唯一缺少的是基于C的库(必须使用.NET)和空闲库

该语言与其他.NET语言的交互就像一场梦。。。特别是如果嵌入解释器并通过引用绑定变量

顺便说一下,IronPython中声明了一个哈希:

d = {}
请注意,它实际上是一个IronPython.Dict对象,而不是一个C#dictionary。也就是说,如果您将转换传递给.NET类,转换通常会以不可见的方式工作,如果您需要显式转换,则有一些内置程序可以很好地完成转换

总之,如果你有理由的话,这是一种与.NET一起使用的很棒的语言


只是一句忠告:避免像瘟疫一样使用VisualStudioIronPythonIDE。我发现自动换行操作在缩进、空格和制表符之间出错。现在,这是一个很难跟踪代码中插入的错误。

我建议看一看,一种基于.NET的语言,其语法受Python启发,但提供了.NET 3.5的全部功能

IronPython非常适合使用以.NET为中心的库,但由于两种语言打字方式的根本差异,IronPython不适合创建这些库。由于Boo在编译时进行基于推理的类型化,除非显式请求duck类型化(或用户给出特定类型),它允许您通过C#(和其他语言)代码轻松地构建以.NET为中心的库,而IronPython不适用于此;此外,由于Boo在运行时需要更少的内省,因此它可以编译更快的代码

d = {}