Lua和C#比较

|--------|--------------|--------------|
| | C# | Lua |
| 语言类型 | 编译型语言 静态类型语言 | 解释型语言 动态类型语言 |
| 代码执行顺序 | 无要求 | 从上到下执行 |

代码注释

|------|---------|--------------------------------------------|
| | C# | Lua |
| 单行注释 | // | -- |
| 多行注释 | /* */ | --\[ --], --\[ ]--,--\[ ]-- |
| 文档注释 | /// | 无 |

代码格式

|-----------|------|-----------------------|
| | C# | Lua |
| 分隔符 | 是必须的 | 不是必须的 |
| 指定变量类型 | 是必须的 | 不能指定,并且声明后还可以被赋不同类型的值 |
| 是否有char类型 | 有 | 没有 |

字符串

|------------------------|---------|-----------------------------|
| | C# | Lua |
| 字符串的声明 | 使用双引号"" | 使用双引号""或单引号''或双方括号\[ ] |
| 是否有char类型 | 有 | 没有 |
| 是否可以通过索引器\[\]访问字符串中的字符 | 可以 | 不可以 |
| 字符串的连接 | + | .. |

C#默认初始索引是从0开始,Lua默认是以1开始

函数

|------|-----------|-----------|
| | C# | Lua |
| 多返回值 | 借助ref或out | 可以支持 |
| 多参数 | params关键字 | 使用变长参数... |

运算符

相同

|-------|------------------|
| 算数运算符 | +,-,*,/ |
| 关系运算符 | <,>,<=,>=,== |
| 赋值运算符 | = |
| 移位运算符 | <<,>> |

不同

|---------------|-----------------|-------------|
| | C# | Lua |
| 复合赋值运算符 | +=,-=,*=,/=,%= | 无 |
| 关系运算符 | != | ~= |
| 逻辑运算符 | &&,||,! | and,or,not |
| 整除除法(floor除法) | 无 | //(四舍五入取整数) |
| 自增自减 | ++,-- | 无 |
| 条件运算符 | ?: | 无 |

C#中^代表异或运算符,在Lua中代表幂运算

面向对象

|-----|---------------------|-----------------------|
| | C# | Lua |
| 封装性 | 类和访问修饰符 | table local |
| 继承 | 继承基类实现单继承,继承接口实现多继承 | table 元方法__index方法 |
| 多态 | 重载和重写 | 不支持重载,通过table,元方法表现多态 |

相关推荐
唐青枫3 小时前
线程不是越多越快:C#.NET Thread 生命周期、同步与后台工作线程实战
c#·.net
唐青枫1 天前
别只会反射:C#.NET Emit 动态生成代码实战详解
c#·.net
咕白m6251 天前
.NET 环境下 Word 超链接批量提取方案
c#·.net
用户91721561902111 天前
C# 通信协议增量解析:用状态机处理半包和粘包
c#
小码编匠2 天前
C# 工控上位机必备:数据转换工具类与十个核心模块
后端·c#·.net
唐青枫4 天前
别再乱用 StartNew:C#.NET TaskFactory 任务调度实战详解
c#·.net
Artech4 天前
[MAF预定义的AIContextProvider-03]ChatHistoryMemoryProvider——赋予Agent从经验中学习的能力
ai·c#·agent·memory·maf
Scout-leaf6 天前
C#摸鱼实录——IoC与DI案例详解
c#
咕白m6256 天前
使用 C# 在 Excel 中应用多种字体样式
后端·c#
Artech6 天前
[MAF预定义的AIContextProvider-02]AgentSkillsProvider——将Agent Skills引入MAF
ai·c#·agent·agent skills·maf