aardio 文档

aardio 范例: 在下标中使用多项索引访问 .NET 多维数组

.NET 数组 | Item 属性 | .NET 类型转换

//在下标中使用多项索引访问 .NET 多维数组 
//.NET 数组: https://www.aardio.com/zh-cn/doc/example/Languages/dotNet/Array.html
//Item 属性: https://www.aardio.com/zh-cn/doc/example/Languages/dotNet/Item.html

import dotNet;  
var compiler = dotNet.createCompiler("C#");

compiler.Source = /****** 
using System;
using System.Collections.Generic;
namespace CSharpLibrary  
{ 
    public class TestClass
    { 
        public object[,] multiDimensionalArray = { {1,2,3} , {4,5,6}  };
    }
} 
******/ 

compiler.import("CSharpLibrary"); 
var netObj = CSharpLibrary.TestClass(); 

/*
C# 中的普通的一维数组、多维数组只要是简单值类型的数组都会转换为纯 aardio 数组。
.NET 中包果是简单值类型的多维数组则会被转换为 aardio 的嵌套数组,也就是数组的数组。
简单值指的是字符串、数值、布尔值等两种语言中可以通用的基础值类型。
.NET 类型转换: https://www.aardio.com/zh-cn/doc/library-guide/std/dotNet/type-conversion.html

类似上面 C# 里的 object 多维数组这种则是无法自动转换为 aardio 数组的类型,
在 aardio 中 netObj.multiDimensionalArray 将是一个原始的 .NET 对象。
*/

/*
aardio 支持在下标中用逗号分隔多项索引(第一个索引必须是单个标识符或字面量),
这种语法支持 .NET 接口、COM 接口,普通对象也可以使用 _get 元方法自定义对应的操作。

在 aardio 中这种写法实际上是创建了一个纯数组 [0,0] 作为索引,
再由 aardio 在调用 .NET 时自动展开为多维索引。 
*/
netObj.multiDimensionalArray[0,0] = 123;

//也可以使用多项索引读取值,
var value = netObj.multiDimensionalArray[0,0];

//实际上面的代码会被转换为下面这种写法的简化
var value = netObj.multiDimensionalArray[ [0,0] ];//用空格分开双层方括号以避免被识别为直接下标操作符

//注意在 .NET 对象下标操作符中的单个数值索引值 aardio 将自动减 1,
//而使用多项索引时,则与 .NET 相同以 0 为起始索引,aardio 不会自动减 1。

print( value );
Markdown 格式