//在 aardio 中自动支持 .NET 泛型 - ValueTuple 示例 import console; import dotNet; /* ValueTuple 要 .NET 4.7 以上才能支持( Windows 10 1703 开始自带.Net 4.7 )。 也可以自行下载 System.ValueTuple.dll 并通过 dotNet.reference() 函数引入,可支持 .NET 4.4 以及更新版本。 */ import System.ValueTuple; /* 创建 ValueTuple 对象,最多支持 8 个参数。 注意这是一个典型的泛型函数,aardio 可以通过参数类型自动匹配泛型函数。 */ var tuple = System.ValueTuple.Create( 21,22,23,24,25,26,27, dotNet.double(28) /* 可选用以下函数明确声明参数类型: dotNet.object,dotNet.byte,dotNet.ubyte,dotNet.word,dotNet.uword ,dotNet.int,dotNet.uint,dotNet.long,dotNet.float,dotNet.double 参考「 编译 / 类型」范例。 */ ); console.log("查看对象类型",tuple.GetType()) /* ValueTuple 最多只能有7个元素, 可使用字段 Item1, Item2, Item3, Item4, Item5, Item6, Item7 访问。 */ console.log(tuple) //console.log 会自动调用 tostring(tuple) console.log(tuple.Item1) //返回第 1 个元素的值 console.log(tuple.Item2) //返回第 2 个元素的值 tuple.Item7 = 123; //可以修改值,并不是只读的 console.log(tuple.Item7) //返回第 7 个元素的值 //那如果有第 8 个元素怎么办呢?通过 Rest 字段放到下一个 ValueTuple 里。 console.log(tuple.Rest) //调用 tostring(tuple.Rest) console.log(tuple.Rest.Item1) //返回第 8 个元素的值 /* 实际上你没有必要使用超过 8 个元素的元组。 这世上任何事都有上限,有边界,没有无所不能。 */ //遍历 tuple for i,v in System.ValueTuple.each(tuple){ console.log(i,v); } console.pause(); /* // ValueTuple C# 示例 namespace TestValueTuple { public class Class1 { public static (double, int, int, int, int, int, int, int, int, int, int) tupleValue = (12.3, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22); public static (double, int) GetTupleValue() { return (12.3, 22); } } } */