อ้อ ถ้าคนพอรู้จัก C# จะรู้ว่ามันคือ C++(ISO) รวมกับ Java 1.2 ผนวกเข้าด้วยเทคโนโลยี .NET บางอย่างก็เลยได้แนวของ C++ มา บางอย่างก็ได้ของ Java มา

ตัวอย่างเช่นตัวแปรสตริงประกาศด้วย string ไม่ใช่ String แบบของ Java แต่ว่า parameter list ของ main จะเป็น string[] args เป็น style ของ Java

หรือบางอย่างที่คล้ายกัน ๆ แต่ไม่เหมือนอย่างชัดเจน เช่นการมี pass by reference โดยใช้ keyword ref วางไว้ข้างหน้า type ของตัวแปรเช่น

void f(ref int x){
...
}

แต่บางอย่างก็เป็นของใหม่(อย่างน้อยก็ใหม่สำหรับผม) เช่น

intg(out int x){
x=5;
return 10;
}

เป็นการส่งค่าตัวแปรออกมาทาง parameterของ function ได้เลย
ข้อแตกต่างกันระหว่าง pass by reference กับการใช้ out ก็คือตัวแปรที่ถูก pass by reference จะต้องมีการกำหนดค่าก่อน(เป็นข้อกำหนดของ C# ที่จะต้องกำหนดค่าตัวแปรก่อนการใช้งาน)

หรือการที่ C# พยายามตัด pointer ออกไปเหมือนดังที่ Java ทำ
แต่ด้วยการที่มันเป็นลูกหลานของ C++ มันจึงยังแอบถูกเก็บไว้อยู่ แต่ถ้าจะใช้ต้องอยู่ภายใต้ส่วนที่เรียกว่า unsafe มันก็ทำให้คนที่เขียน C มาก่อนยังคงสะดวกอยู่บ้าง เพราะการตัด pointerออกไปจากภาษา ก็ทำให้เขียนยากขึ้นในบางกรณีนะ

แต่ทำไมต้องใช้ Main ด้วยเนี่ย

Comment

Comment:

Tweet

I thank you humbly for shriang your wisdom JJWY

#2 By YcGg6nm0 (174.55.79.97) on 2013-07-29 22:57

Thanks for sttiarng the ball rolling with this insight.

#1 By ORVWoSUV4Mjh (190.249.230.196) on 2013-07-28 04:09