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() 

猜你喜欢

转载自blog.csdn.net/qq_33461689/article/details/121923929