# aardio 范例: 在 aardio 中使用 .NET 枚举（enum）



```aardio
//在 aardio 中使用 .NET 枚举（enum）
import console;
import dotNet; 
var compiler = dotNet.createCompiler("C#");
compiler.Source = /***
namespace CSharpLibrary  
{   
    public class Object  
    {     
 		public enum HardwareType
		{
			Mainboard, SuperIO, CPU, RAM, GpuNvidia, GpuAti, TBalancer, Heatmaster, HDD
		}
        
 		public static HardwareType TestEnum(HardwareType v)
   		{
       		 return v;
   		}
    }   
} 
***/
 
compiler.import("CSharpLibrary"); 

//调用 C# 函数，枚举参数传数值，C# 不会报找不到函数错误，因为 aardio 会自动将其转换为参数所需的枚举类型
var ret = CSharpLibrary.Object.TestEnum(1);

//Enum 其实就是 int 类型的 32 位整数，aardio 整数默认就是这个类型
console.log(ret);

//也支持像下面这样直接访问枚举类型。
console.log( CSharpLibrary.Object.HardwareType.GpuAti );
/***
直接写数值速度更快，可以将枚举名写到注释里，例如 5/*HardwareType.GpuAti*/
那种没事把枚举值顺序改来改去的组件非常罕见（ 但也是有的 ）
当然，aardio 会记录解析的枚举值，所以不会重复解析。
***/

/*
如果在枚举名前面加上 `get` 前缀
并以 `enumType.getName()` 格式调用则会返回原始的 .NET 枚举值对象
*/

// red 是 .NET 枚举值（dotNet.object 对象）
var HardwareTypeGpuAti = CSharpLibrary.Object.HardwareType.getGpuAti();

// 解析为 aardio 值
print( HardwareTypeGpuAti.Value ) // 显示 5

console.pause();
```

