虽然Ironpython可以使用.net中的对象,但是在真正使用的时候,还是有一些需要注意的地方,这里列出平时整理出来的,供参看
1. 使用.net中的List

from System.Collections.Generic import List, Dictionary
int_list = List[int]()

同样Byte类型的值的定义

from System import Byte
b = Byte(1)  

2.C# lambada

>>> from System.Collections.Generic import IEnumerable, List
>>> list = List[int]([1, 2, 3])
>>> import clr
>>> clr.AddReference("System.Core")
>>> from System.Linq import Enumerable
>>> Enumerable.Any(list,lambda x:x<2)
True
>>> Enumerable.Any(list,lambda x:x>2)
True
>>> Enumerable.Any(list,lambda x:x>4)
False

3.C#中的byte[]数组,在Ironpython中这样表示bbyte = Array[Byte]
当然,首先需要import数组和Byte from System import Array,Byte
还有一种方式是通过System.Type来达到

bbtype = System.Type.GetType('System.Byte')
b_buffer = System.Array.CreateInstance(bbtype, 1024)

4.ref 和 out参数类型

>>> from System.Collections.Generic import Dictionary
>>> d = { "a":100.1, "b":200.2, "c":300.3 }
>>> d = Dictionary[str, float](d)
>>> d.TryGetValue("b")
(True, 200.2)
>>> import clr
>>> r = clr.Reference[float]()
>>> d.TryGetValue("b", r)
True
>>> r.Value
200.2
>>>

agentwx
354 声望23 粉丝

« 上一篇
RabbitMQ集群