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

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

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

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

[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相关联:

调用结果打印:

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

  1. APUE学习笔记——10.11~10.13 信号集、信号屏蔽字、未决信号

    如有转载,请注明出处:Windeal专栏 首先简述下几个概念的关系: 我们通过信号集建立信号屏蔽字,使得信号发生阻塞,被阻塞的信号即未决信号. 信号集: 信号集:其实就是一系列的信号.用sigset_ ...

  2. lua学习笔记10:lua简单的命令行

    前面反复使用的命令行,好学喜欢命令行: 一 格公式 lua [options][script][args] 两 详细命令 -e 直接命令传递一个lua -l 加载文件 -i 进入交互模式 比例如.端子 ...

  3. 【视频编解码·学习笔记】11. 提取SPS信息程序

    一.准备工作: 回到之前SimpleH264Analyzer程序,找到SPS信息,并对其做解析 调整项目目录结构: 修改Global.h文件中代码,添加新数据类型UINT16,之前编写的工程中,UIN ...

  4. 《C++ Primer Plus》学习笔记10

    <C++ Primer Plus>学习笔记10 <<<<<<<<<<<<<<<<<&l ...

  5. SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序

    SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序 快速开始 本指南将引导您完成创建“hello world”应用程序的过程,该应用程序在浏览器和服务器之间来回发送消 ...

  6. javaSE学习笔记(11)--- Map

    javaSE学习笔记(11)--- Map 1.Map集合 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射.Jav ...

  7. SQL反模式学习笔记10 取整错误

    目标:使用小数取代整数 反模式:使用Float类型 根据IEEE754标识,float类型使用二进制格式编码实数数据. 缺点:(1)舍入的必要性: 并不是所有的十进制中描述的信息都能使用二进制存储,处 ...

  8. Hadoop学习笔记(10) ——搭建源码学习环境

    Hadoop学习笔记(10) ——搭建源码学习环境 上一章中,我们对整个hadoop的目录及源码目录有了一个初步的了解,接下来计划深入学习一下这头神象作品了.但是看代码用什么,难不成gedit?,单步 ...

  9. APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

    转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...

  10. Linux学习笔记(11)linux网络管理与配置之一——配置路由与默认网关,双网卡绑定(5-6)

    Linux学习笔记(11)linux网络管理与配置之一——配置路由与默认网关,双网卡绑定(5-6) 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS ...

随机推荐

  1. 为什么 L1 正则化能做特征选择而 L2 正则化不能

    假设我们的模型只有一个参数 \(w\),损失函数为 \(L(w)\),加入 L1 和 L2 正则化后的损失函数分别记为 \(J_1(w), J_2(w)\): \[\begin{gathered} J ...

  2. Git安装和配置教程:Windows/Mac/Linux三平台详细图文教程,带你一次性搞定Git环境

    Git是一款免费.开源的分布式版本控制系统,广泛应用于软件开发领域.随着开源和云计算的发展,Git已经成为了开发者必备的工具之一.本文将为大家介绍Git在Windows.Mac和Linux三个平台上的 ...

  3. C++ 多线程编程和同步机制:详解和实例演示

    C++中的多线程编程和同步机制使得程序员可以利用计算机的多核心来提高程序的运行效率和性能.本文将介绍多线程编程和同步机制的基本概念和使用方法. 多线程编程基础 在C++中,使用<thread&g ...

  4. 10. Conclusion

    10.1 Matrix Factorizations A = LU = (Lower triangular L with 1's on the diagonal)(Upper triangular U ...

  5. Servlet和springMVC

    什么是Servlet? Servlet是使用Java语言编写的运行在服务器端的程序.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一 ...

  6. 【译】新的 MSBuild 编辑体验

    MSBuild 是 .NET 开发体验的基本组成部分,但它对新手和有经验的开发人员都具有挑战性.为了帮助开发人员更好地理解他们的项目文件,并访问需要直接编辑项目文件的高级功能,我们发布了一个实验性的 ...

  7. 【Windbg Preview】Failed to load data access DLL, 0x80004005

    最近使用Windbg的时候一直在用Preview版本,感觉解析一下就能直接加载起环境来太爽了.不过最近遇到一个dump加载不起来了. 但是最近一次加载却失败了,尝试了很久也不行 Failed to l ...

  8. MQTT实战系列(一)——MQTT简介

    随着移动互联网以及物联网应用的蓬勃发展,阿里云推出微消息队列 MQTT,从而实现端(浏览器.Android.iOS.智能设备.直播互动.车联网)与云的双向通信,通过消息实现万物互联. MQTT (Me ...

  9. JVM简明笔记2:运行时数据区

    1 内存布局总体结构 根据 JVM 规范,JVM 内存共分为虚拟机栈(Virtual Machine Stacks).堆(Heap).方法区(Method Area).程序计数器(Program Co ...

  10. “让专业的人做专业的事”,畅捷通与阿里云的云原生故事 | 云原生 Talk

    简介: 如何借助阿里云强大的 IaaS 和 PaaS 能力去构建新一代的 SaaS 企业应用,从而给客户提供更好.更强的服务,这是畅捷通一直在思考和实践的方向.最终,畅捷通选定阿里云企业级分布式应用服 ...