เปรียบเทียบ Luau และ C#

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

Roblox ใช้ภาษาโปรแกรม Luau ตัวอย่างโค้ดและตารางต่อไปนี้แสดงความแตกต่างบางประการระหว่างไวยากรณ์ของ C# และ Luau

การขึ้นบรรทัด

คุณไม่ต้องใช้เซมิโคลอนใน Luau แต่ก็ไม่ทำให้เกิดข้อผิดพลาดในไวยากรณ์

คำสำคัญที่สงวนไว้

ตารางต่อไปนี้แสดงคำสำคัญที่สงวนไว้ของ Luau ที่เปรียบเทียบกับคำที่เทียบเคียงได้ของ C# หมายเหตุว่าไม่แสดงคำสำคัญทั้งหมดของ C#

LuauC#
and
breakbreak
dodo
ifif
elseelse
elseifelse if
then
end
truetrue
falsefalse
forfor หรือ foreach
function
inin
local
nilnull
not
or
repeat
returnreturn
until
whilewhile

ความคิดเห็น

ความคิดเห็นใน Luau

-- ความคิดเห็นบรรทัดเดียว
--[[ ผลลัพธ์ที่ได้:
ความคิดเห็นหลายบรรทัด
--]]
ความคิดเห็นใน C#

// ความคิดเห็นบรรทัดเดียว
/*
ความคิดเห็นหลายบรรทัด
*/

สายอักขระ

สายอักขระใน Luau

-- สายอักขระหลายบรรทัด
local multiLineString = [[นี่คือสายอักขระที่,
เมื่อพิมพ์จะแสดง
อยู่ในหลายบรรทัด]]
-- การต่อสายอักขระ
local s1 = "นี่คือสายอักขระ "
local s2 = "สร้างด้วยสองส่วน."
local endString = s1 .. s2
สายอักขระใน C#

// สายอักขระหลายบรรทัด
string multiLineString1 = "นี่คือสายอักขระที่,\nเมื่อพิมพ์จะแสดง\nอยู่ในหลายบรรทัด.";
string multiLineString2 = @"นี่คือสายอักขระที่,
เมื่อพิมพ์จะแสดง
อยู่ในหลายบรรทัด";
// การต่อสายอักขระ
string s1 = "นี่คือสายอักขระ ";
string s2 = "สร้างด้วยสองส่วน.";
string endString = s1 + s2;

ตาราง

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับตารางใน Luau ให้ดูที่ ตาราง.

ตารางพจนานุกรม

คุณสามารถใช้ตารางใน Luau เป็นพจนานุกรมเหมือนกับใน C#.

ตารางพจนานุกรมใน Luau

local dictionary = {
val1 = "นี่",
val2 = "คือ"
}
print(dictionary.val1) -- แสดงผล 'นี่'
print(dictionary["val1"]) -- แสดงผล 'นี่'
dictionary.val1 = nil -- ลบ 'val1' ออกจากตาราง
dictionary["val3"] = "พจนานุกรม" -- เขียนทับ 'val3' หรือกำหนดคู่คีย์-ค่าใหม่
ตารางพจนานุกรมใน C#

Dictionary dictionary = new Dictionary()
{
{ "val1", "นี่" },
{ "val2", "คือ" }
};
Console.WriteLine(dictionary["val1"]); // แสดงผล 'นี่'
dictionary.Remove("val1"); // ลบ 'val1' ออกจากพจนานุกรม
dictionary["val3"] = "พจนานุกรม"; // เขียนทับ 'val3' หรือกำหนดคู่คีย์-ค่าใหม่
dictionary.Add("val3", "พจนานุกรม"); // สร้างคู่คีย์-ค่าใหม่

ตารางหมายเลข

คุณสามารถใช้ตารางใน Luau เป็นอาเรย์เหมือนกับใน C#. ดัชนีเริ่มต้นที่ 1 ใน Luau และ 0 ใน C#.

ตารางหมายเลขใน Luau

local npcAttributes = {"แข็งแกร่ง", "ฉลาด"}
print(npcAttributes[1]) -- แสดงผล 'แข็งแกร่ง'
print(#npcAttributes) -- แสดงขนาดของรายการ
-- เพิ่มลงในรายการ
table.insert(npcAttributes, "อ่อนน้อม")
-- อีกวิธี...
npcAttributes[#npcAttributes+1] = "อ่อนน้อม"
-- แทรกที่จุดเริ่มต้นของรายการ
table.insert(npcAttributes, 1, "กล้าหาญ")
-- ลบรายการที่ดัชนีที่กำหนด
table.remove(npcAttributes, 3)
ตารางหมายเลขใน C#

List npcAttributes = new List{"แข็งแกร่ง", "ฉลาด"};
Console.WriteLine(npcAttributes[0]); // แสดงผล 'แข็งแกร่ง'
Console.WriteLine(npcAttributes.Count); // แสดงขนาดของรายการ
// เพิ่มลงในรายการ
npcAttributes.Add("อ่อนน้อม");
// อีกวิธี...
npcAttributes.Insert(npcAttributes.Count, "อ่อนน้อม");
// แทรกที่จุดเริ่มต้นของรายการ
npcAttributes.Insert(0, "กล้าหาญ");
// ลบรายการที่ดัชนีที่กำหนด
npcAttributes.Remove(2);

ตัวดำเนินการ

ตัวดำเนินการเงื่อนไข

ตัวดำเนินการLuauC#
เท่ากัน====
มากกว่า>>
น้อยกว่า<<
มากกว่าหรือเท่ากับ>=>=
น้อยกว่าหรือเท่ากับ<=<=
ไม่เท่ากัน~=!=
และand&&
หรือor||

ตัวดำเนินการทางคณิตศาสตร์

LuauC#
การบวก++
การลบ--
การคูณ**
การหาร//
โมดูลัส%%
การยกกำลัง^**

ตัวแปร

ใน Luau ตัวแปรจะไม่ระบุประเภทเมื่อคุณประกาศไว้ ตัวแปรใน Luau ไม่มีตัวระบุการเข้าถึง แม้ว่าคุณอาจใช้สัญลักษณ์ขีดล่างนำหน้าตัวแปร "ส่วนตัว" เพื่อให้เข้าใจง่ายขึ้น

ตัวแปรใน Luau

local stringVariable = "ค่า"
-- การประกาศ "สาธารณะ"
local variableName
-- การประกาศ "ส่วนตัว" - ประมวลผลในลักษณะเดียวกัน
local _variableName
ตัวแปรใน C#

string stringVariable = "ค่า";
// การประกาศสาธารณะ
public string variableName
// การประกาศส่วนตัว
string variableName;

ขอบเขต

ใน Luau คุณสามารถเขียนตัวแปรและตรรกะในขอบเขตที่แน่นกว่าฟังก์ชันหรือคลาสของพวกเขาโดยการซ้อนตรรกะภายใน do และ end คำสำคัญ ซึ่งคล้ายกับวงเล็บปีกกา {} ใน C# สำหรับรายละเอียดเพิ่มเติมโปรดดูที่ ขอบเขต.

การขอบเขตใน Luau

local outerVar = 'ข้อความขอบเขตภายนอก'
do
-- แก้ไข 'outerVar'
outerVar = 'ข้อความขอบเขตภายในถูกแก้ไข'
-- แนะนำตัวแปรท้องถิ่น
local innerVar = 'ข้อความขอบเขตภายใน'
print('1: ' .. outerVar) -- แสดงผล "1: ข้อความขอบเขตภายในถูกแก้ไข"
print('2: ' .. innerVar) -- แสดงผล "2: ข้อความขอบเขตภายใน"
end
print('3: ' .. outerVar) -- แสดงผล "3: ข้อความขอบเขตภายในถูกแก้ไข"
// การพยายามพิมพ์ 'innerVar' ที่นี่จะล้มเหลว
การขอบเขตใน C#

var outerVar = "ข้อความขอบเขตภายนอก";
{
// แก้ไข 'outerVar'
outerVar = "ข้อความขอบเขตภายในถูกแก้ไข";
// แนะนำตัวแปรท้องถิ่น
var innerVar = "ข้อความขอบเขตภายใน";
Console.WriteLine("1: " + outerVar); // แสดงผล "1: ข้อความขอบเขตภายในถูกแก้ไข"
Console.WriteLine("2: " + innerVar); // แสดงผล "2: ข้อความขอบเขตภายใน"
}
Console.WriteLine("3: " + outerVar); // แสดงผล "3: ข้อความขอบเขตภายในถูกแก้ไข"
// การพยายามพิมพ์ 'innerVar' ที่นี่จะล้มเหลว

คำสั่งเงื่อนไข

คำสั่งเงื่อนไขใน Luau

-- เงื่อนไขเดียว
if boolExpression then
doSomething()
end
-- หลายเงื่อนไข
if not boolExpression then
doSomething()
elseif otherBoolExpression then
doSomething()
else
doSomething()
end
คำสั่งเงื่อนไขใน C#

// เงื่อนไขเดียว
if (boolExpression) {
doSomething();
}
// หลายเงื่อนไข
if (!boolExpression) {
doSomething();
}
else if (otherBoolExpression) {
doSomething();
}
else {
doSomething();
}

ตัวดำเนินการเงื่อนไข

ตัวดำเนินการเงื่อนไขใน Luau

local max = if x > y then x else y
ตัวดำเนินการเงื่อนไขใน C#

int max = (x > y) ? x : y;

การวนรอบ

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการวนรอบใน Luau ให้ดูที่ โครงสร้างควบคุม.

วนรอบ while และ repeat

วนรอบ While และ Repeat ใน Luau

while boolExpression do
doSomething()
end
repeat
doSomething()
until not boolExpression
วนรอบ While และ Repeat ใน C#

while (boolExpression) {
doSomething();
}
do {
doSomething();
} while (boolExpression)

วนรอบ for

วนรอบ For ทั่วไปใน Luau

-- วนรอบไปข้างหน้า
for i = 1, 10 do
doSomething()
end
-- วนรอบย้อนกลับ
for i = 10, 1, -1 do
doSomething()
end
วนรอบ For ทั่วไปใน C#

// วนรอบไปข้างหน้า
for (int i = 1; i <= 10; i++) {
doSomething();
}
// วนรอบย้อนกลับ
for (int i = 10; i >= 1; i--) {
doSomething();
}
วนรอบ For บนตารางใน Luau

local abcList = {"a", "b", "c"}
for i, v in ipairs(abcList) do
print(v)
end
local abcDictionary = { a=1, b=2, c=3 }
for k, v in pairs(abcDictionary) do
print(k, v)
end
วนรอบ For บนรายการใน C#

List<string> abcList = new List<string>{"a", "b", "c"};
foreach (string v in abcList) {
Console.WriteLine(v);
}
Dictionary<string, int> abcDictionary = new Dictionary<string, int>
{ {"a", 1}, {"b", 2}, {"c", 3} };
foreach (KeyValuePair<string, int> entry in abcDictionary) {
Console.WriteLine(entry.Key + " " + entry.Value);
}

Luau ยังสนับสนุน การวนซ้ำทั่วไป ซึ่งช่วยให้ทำงานกับตารางได้ง่ายขึ้นอีก

ฟังก์ชัน

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันใน Luau ให้ดูที่ ฟังก์ชัน.

ฟังก์ชันทั่วไป

ฟังก์ชันทั่วไปใน Luau

-- ฟังก์ชันทั่วไป
local function increment(number)
return number + 1
end
ฟังก์ชันทั่วไปใน C#

// ฟังก์ชันทั่วไป
int increment(int number) {
return number + 1;
}

จำนวนตัวแปรอาร์กิวเมนต์

จำนวนตัวแปรอาร์กิวเมนต์ใน Luau

-- จำนวนตัวแปรอาร์กิวเมนต์
local function variableArguments(...)
print(...)
end
จำนวนตัวแปรอาร์กิวเมนต์ใน C#

// จำนวนตัวแปรอาร์กิวเมนต์
void variableArguments(params string[] inventoryItems) {
for (item in inventoryItems) {
Console.WriteLine(item);
}
}

อาร์กิวเมนต์ที่ตั้งชื่อ

อาร์กิวเมนต์ที่ตั้งชื่อใน Luau

-- อาร์กิวเมนต์ที่ตั้งชื่อ
local function namedArguments(args)
return args.name .. "'s birthday: " .. args.dob
end
namedArguments{name="Bob", dob="4/1/2000"}
อาร์กิวเมนต์ที่ตั้งชื่อใน C#

// อาร์กิวเมนต์ที่ตั้งชื่อ
string namedArguments(string name, string dob) {
return name + "'s birthday: " + dob;
}
namedArguments(name: "Bob", dob: "4/1/2000");

โครงสร้าง try-catch

โครงสร้าง Try/Catch ใน Luau

local function fireWeapon()
if not weaponEquipped then
error("ไม่มีอาวุธติดตั้ง!")
end
-- ดำเนินการต่อ...
end
local success, errorMessage = pcall(fireWeapon)
if not success then
print(errorMessage)
end
โครงสร้าง Try/Catch ใน C#

void fireWeapon() {
if (!weaponEquipped) {
// ใช้ข้อยกเว้นที่ผู้ใช้กำหนด
throw new InvalidWeaponException("ไม่มีอาวุธติดตั้ง!");
}
// ดำเนินการต่อ...
}
try {
fireWeapon();
} catch (InvalidWeaponException ex) {
// ยกเว้นถูกเรียกขึ้น
}
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ