S&box Wiki

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⤶ }⤶ } ```