KaaPexei 发表于 2023-4-11 19:30

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]
查看完整版本: XLua笔记(二)