Revision Difference
From_Lua_to_CSharp#528898
<cat>Dev.Intro</cat>
<title>From Lua to C#</title>
<warning>This article is a work in progress. Please consider not making any changes to it at the moment.</warning>
# What is this guide
This is mean to give an idea of the major differences between C# and Lua⤶
This is meant to give an idea of the major differences between Lua and C#⤶
# Comments
```lua
--[[⤶
-- Lua comments start with two minus signs⤶
⤶
--[[⤶
Lua multiline comment
example
--]]
⤶
-- Lua comments start with two minus signs⤶
```
⤶
```⤶
⤶
```csharp⤶
// csharp comments start with two slashes, like most other languages
/*
csharp multiline comment
example
*/
```
⤶
⤶
# Global Variables⤶
⤶
# Global Variables⤶
```lua
-- you can define globals anywhere
globalVar = 100
```
```csharp
public class MyClass
{
// globals need to be in a class
public static int GlobalVar = 100;
}⤶
```⤶
⤶
# Variable Types⤶
⤶
```lua⤶
-- Variables in Lua don't have a static type and can store any data⤶
local a = 100⤶
a = 'Hello'⤶
a = function() print('Hi') end⤶
```⤶
⤶
```csharp⤶
int a = 100;⤶
a = "Hello"; // Error: can't assign a string to an int⤶
```⤶
⤶
# Numbers⤶
⤶
```lua⤶
local a = 100⤶
a = 5.5⤶
a = -300.1⤶
```⤶
⤶
```csharp⤶
int a = -300;⤶
uint b = 333333;⤶
double c = -500.888;⤶
```⤶
⤶
# Member Access⤶
⤶
In Lua anything is accessible from anywhere as long as you have a reference⤶
⤶
```lua⤶
-- myFile.lua⤶
myTable = {⤶
field = 100⤶
}⤶
```⤶
⤶
```lua⤶
-- otherFile.lua⤶
print(myTable.field) -- 100⤶
```⤶
⤶
In C# things can be **public**, **private**, **protected** and **internal**⤶
⤶
```csharp⤶
// MyClass.cs⤶
public class MyClass⤶
{⤶
public static void PublicMethod() { ... }⤶
protected static void ProtectedMethod() { ... }⤶
private static void PrivateMethod() { ... }⤶
}⤶
```⤶
⤶
```csharp⤶
// OtherClass.cs⤶
public class OtherClass : MyClass⤶
{⤶
public static void Test()⤶
{⤶
MyClass.PublicMethod(); // OK⤶
MyClass.ProtectedMethod(); // We inherit from MyClass so OK⤶
MyClass.PrivateMethod(); // Error: PrivateMethod is private⤶
}⤶
}
```