XLua笔记(二)
XLua笔记一、XLua的枚举转换:
之前的项目用过XLua的cast强转,枚举可以使用cast强制转换吗?今天试了一下, 发现转换不了。翻了一些博客,加上自己实践,整理了一下五种枚举使用和转换的方式:
C#新建一个测试枚举:
public enum TestEnum
{
Null = 0,
} Lua代码测试调用C#枚举:
Test(CS.TestEnum.Null) --直接访问对应枚举
Test(CS.TestEnum.__CastFrom(0)) --调用__CastFrom方法,参数传枚举对应的值
Test(CS.TestEnum.__CastFrom("Null")) --调用__CastFrom方法,参数传枚举对应的字符串
Test(0) --直接使用枚举的值
Test("Null") --直接使用枚举的字符串二、获取枚举对应字符串:
C#中枚举可以直接ToString()获取到枚举对应的字符串,但是Lua里面却获取不到。
local _sid =0
local _test = CS.TestEnum.__CastFrom(_sid) --_test结果是枚举table(Null),打印出来是 ->Null
local _result = tostring(_test) --打印出来是 -> Null: 0_test和_result都不是我们想要的结果。
我们可以通过System.Enum.GetName方法获取枚举对应的字符串:
local _result = CS.System.Enum.GetName(typeof(CS.TestEnum),sid)-- _result结果是一个字符串:Null 三、获取枚举对应的值:
同理,调用枚举的GetHashCode方法就可以获取到对应的枚举值。
local _result = CS.TestEnum.Null:GetHashCode()
页:
[1]