找回密码
 立即注册
查看: 389|回复: 0

XLua笔记(二)

[复制链接]
发表于 2023-4-11 19:30 | 显示全部楼层 |阅读模式
XLua笔记
一、XLua的枚举转换:
之前的项目用过XLua的cast强转,枚举可以使用cast强制转换吗?今天试了一下, 发现转换不了。翻了一些博客,加上自己实践,整理了一下五种枚举使用和转换的方式:
C#新建一个测试枚举:
  1. public enum TestEnum
  2. {
  3.     Null = 0,
  4. }
复制代码
Lua代码测试调用C#枚举:
  1. Test(CS.TestEnum.Null)                                        --直接访问对应枚举
  2. Test(CS.TestEnum.__CastFrom(0))                        --调用__CastFrom方法,参数传枚举对应的值
  3. Test(CS.TestEnum.__CastFrom("Null"))        --调用__CastFrom方法,参数传枚举对应的字符串
  4. Test(0)                                                                        --直接使用枚举的值
  5. Test("Null")                                                        --直接使用枚举的字符串
复制代码
二、获取枚举对应字符串:
C#中枚举可以直接ToString()获取到枚举对应的字符串,但是Lua里面却获取不到。
  1. local _sid =  0
  2. local _test = CS.TestEnum.__CastFrom(_sid)        --_test结果是枚举table(Null),打印出来是 ->  Null
  3. local _result = tostring(_test)                                --打印出来是 -> Null: 0
复制代码
_test和_result都不是我们想要的结果。
我们可以通过System.Enum.GetName方法获取枚举对应的字符串:
  1. local _result = CS.System.Enum.GetName(typeof(CS.TestEnum),sid)  -- _result结果是一个字符串:Null
复制代码
三、获取枚举对应的值:
同理,调用枚举的GetHashCode方法就可以获取到对应的枚举值。
  1. local _result = CS.TestEnum.Null:GetHashCode()
复制代码
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-23 08:36 , Processed in 0.109342 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表