首页 > 编程语言 >热更学习笔记10~11----lua调用C#中的List和Dictionary、拓展类中的方法

热更学习笔记10~11----lua调用C#中的List和Dictionary、拓展类中的方法

时间:2024-05-18 23:09:12浏览次数:32  
标签:11 10 .. -- list ---- student print local

[10]Lua脚本调用C#中的List和Dictionary

调用还是在上文中使用的C#脚本中Student类:

image-20240518221946523

lua脚本:

print("------------访问使用C#脚本中的List和Dictionary-----------")

student.list:Add(2024)
student.list:Add(5)
student.list:Add(18)
local listSize = student.list.Count
print("list长度".. tostring(listSize))

--遍历list
for i = 0,listSize - 1 do
    print("--->" .. student.list[i])
end 

print(student.list)

student.dic:Add(1,"北京")
student.dic:Add(2,"上海")
student.dic:Add(3,"广州")
student.dic:Add(4,"深圳")
--遍历dic
--使用迭代器遍历键值对
local iterDic = student.dic:GetEnumerator()
while iterDic:MoveNext() do
    local val = iterDic.Current.Value
    print("--->" .. iterDic.Current.Key .. "---".. val)
end 

--单独遍历键
local iterDicKey = student.dic.Keys:GetEnumerator()
while iterDicKey:MoveNext() do
    print("键---" .. iterDicKey.Current)
end

--遍历值
local iterDicVal = student.dic.Values:GetEnumerator()
while iterDicVal:MoveNext() do
    print("值---" .. iterDicVal.Current)
end 

----------------------在lua脚本中新增C#中的dic和list
----比较麻烦 需要新添加要增加的数据结构类型
--新增list
local list2 = System.Collections.Generic.List_int()
list2:Add(5)
list2:Add(16)
print("list2[0]" .. list2[0])
print("list2[1]" .. list2[1])

--新增加字典
local dic2 = System.Collections.Generic.Dictionary_int_string()
dic2:Add(521,"我爱你")

local iterDic2 = dic2:GetEnumerator()
while iterDic2:MoveNext() do
    local key = iterDic2.Current.Key
    local val = iterDic2.Current.Value
    print("Dic2---" .. key .. "--" .. val)
end

image-20240518221652873

CustomSetting中新增的使用的C#中的数据结构类型,就此可以体会一下lua中的userdata的数据类型!

image-20240518222011050

[11]Lua中调用C#类中的拓展方法

在lua中调用Student类的拓展方法

--调用拓展类中的方法
local Jack = TestScripts.Student("Jack")
--调用拓展方法 . 调用需要传一个自身引用
Jack.SingSunny(self)
--或者 使用 :调用 
Jack:SingSunny() 

所调用的C#脚本中的类:

 public static class Tools
 {
     public static void SingSunny(this Student student)
     {
         Debug.Log("我在唱周董的晴天!");
     }
 }
public class Student
{
    private string _name;

    public Student(string name)
    {
        _name = name;
    }

    public void Speak()
    {
        Debug.Log("my name is " + _name);
    }
    //+ 新增数组内容
    public int[] array = new int[5] { 1, 2, 3, 4, 5 };

    public List<int> list = new List<int>() { 6, 7, 8, 9, 10 };

    public Dictionary<int, string> dic = new Dictionary<int, string>();

}

CustomSetting中将拓展类Tools和被拓展的类Student相关联:

image-20240518225846467

调用结果打印:

image-20240518230124339

标签:11,10,..,--,list,----,student,print,local
From: https://www.cnblogs.com/TonyCode/p/18199897

相关文章

  • 旧笔记本装UbuntuServer用作家庭媒体服务器
    目标:将UbuntuServer系统安装到U盘,笔记本从U盘启动自动进入系统,共享笔记本USB外接大容量硬盘中的电影到家庭局域网。准备:1.ventoy引导U盘2.UbuntuServer20.04LTS镜像ISO3.U盘16G或更大步骤:1.16GU盘格式化为FAT32后插入笔记本;2.下载的ISO镜像放入ventoy引导U盘,设置笔记本......
  • k3s和k8s对比,应该选择哪个
    k3s和k8s都是Kubernetes的发行版,但在一些关键特性上存在差异。以下是两者的对比及选择建议:1.特性与功能:k8s(Kubernetes)是一个功能完善的容器编排系统,具有自动装箱、自我修复、水平扩展、服务发现和负载均衡等特性。它支持复杂的部署、扩展和管理操作,适用于大规模生产环境。k3s......
  • react中的jsx语法
    JSX是JavaScriptXML的缩写,它是一种JavaScript的语法扩展。JSX允许在JavaScript代码中编写类似于XML或HTML的标记结构,用来描述用户界面的结构。 在React应用中,开发者通常使用JSX来定义组件的结构。这样做的好处是,JSX让代码更加直观易读,并且可以轻松地在JavaS......
  • Serv-U MFT Server(Managed File Transfer Server)是一款专为企业级用户设计的文件传输
    Serv-UMFTServer(ManagedFileTransferServer)是一款专为企业级用户设计的文件传输解决方案,它是基于著名的Serv-UFTPServer的增强版,专注于提供更加安全、可控和高效的文件传输服务。MFT(ManagedFileTransfer)即管理型文件传输,与传统的FTP相比,它更加强调安全性、合规性和可......
  • C 语言中的 sscanf 详解
    一、函数介绍函数原型:intsscanf(constchar*str,constchar*format,...);返回值:成功返回匹配成功的模式个数,失败返回-1。RETURNVALUEThesefunctionsreturnthenumberofinputitemssuccessfullymatchedandassigned,whichcanbefewerthanprovi......
  • 换元积分法训练题
    在求解不定积分的过程中,第一和第二换元积分法的应用不是彼此孤立的,往往需要同时混合使用instance0\[\begin{align}\intx^{3}\sqrt{4-x^{2}}dx=?\\\\设:x=2\sint\\\\\int\left(2\sint\right)^{3}\sqrt{4-4\sin^{2}t}\cdotd\left(2\sint\right)\\\\\int(2\si......
  • 贝叶斯推断架构实现
    贝叶斯推断基础贝叶斯方法提出了一个概率框架来描述如何将新的观察结果整合到决策过程中。传统的贝叶斯推断的二进制算术结构中,后验概率的计算需要大量的乘、除、加。先验概率(由历史求因):根据以往经验和分析得到的概率,观测数据前某一不确定量的先验概率分布,通常指模型的参数\(\th......
  • CentOS配置静态IP
    1.查看虚拟机使用的网络连接方式2.查看虚拟机的网络连接方式IP3.1.CentOS6.8之前IP配置方法打开系统输入setup,进入文本模式设置工具进入网络配置模式进入网络配置模式过后在进入设置配置,选项eth0网卡进入配置静态IP关闭DHCP,在静态IP,子网掩码和默认网关输入自己需要设定的......
  • 电子公文传输系统安全-进展一
    上周任务完成情况每人撰写并提交一份读书笔记小组撰写并提交一份加固计划书、一份安全性设计方案小组撰写并提交一份系统安全设计报告小组讨论原公文传输系统的问题不足和改进方向小组讨论新公文传输系统的修改方案和预期效果每人自行学习国密标准、算法知识和设计方法原......
  • 存储监控软件stor2rrd
    stor2rrdStor2rrd是一种开源软件工具,用于监视和报告性能存储系统,SAN开关,和局域网开关.它由捷克公司Xorux开发;该工具支持来自主要存储供应商的企业级存储设备;例如:IBM、DellEMC、NetAPP、HPE、Hitachi、Lenovo、PureStorage、Huawei、DotHill、INFINIDAT、Fujitsu、DataCo......