Google Search

Custom Search

ผลการค้นหา

วันอังคารที่ 10 กุมภาพันธ์ พ.ศ. 2552

C# 3.0 new feature

.NET 2.0 ก็ออกมาอย่างเป็นทางการแล้ว รวมทั้ง IDE อย่าง vs 2005 ก็ออกมาให้ดาวน์โหลดกันฟรี(express edition) แล้ว แต่ท่านรู้หรือไม่ spec ของ C# 3.0 ก็ออกมาก่อนหน้านี้แล้วเหมือนกัน หลาย ๆ เว็บก็มี (p)review กันแล้วล่ะ

เอาของเก่ามาเล่าใหม่อีกครั้ง จะเป็นไรไป

Implicitly typed local variables
เป็นการประกาศตัวแปรใหม่ แบบไม่ต้องกำหนด data type โดยการดูจาก type ของ initialized value โดยประกาศได้โดยใช้ keyword var คุ้น ๆ มั้ยครับ กับ keyword นี้ ก็แหม คุณ Anders Heljsberg เป็นคนออกแบบนี่นา อะไร อะไรมันก็ต้องเอา Delphi มาใช้กันหน่อย เอ๊ะ หรือว่ามันจะมาจากคำว่า variant ใน VB หว่า (ไม่ใช่หรอก var ย่อจาก variable เป็น keyword จาก Delphi น่ะแหละ)
ตัวอย่างก็ขอเอามาจากใน specification doc เลยละกัน
var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] {1, 2, 3};
ซืึ่งจะมีความหมายเดียวกับ
int i = 5;
string s = "Hello";
double d = 1.0;
int[] numbers = new int[] {1, 2, 3};
โดยข้อกำหนดของการประกาศ type แบบ implicit มีอยู่ว่า
การ declare ตัวแปรจะต้องกำหนดค่าให้ทันที
ค่าที่กำหนดจะต้องเป็น expression
ไม่สามารถกำหนดค่า null ให้ได้(ก็แหงล่ะ ไม่งั้นจะระบุ type ยังไงล่ะ)
ดังนั้นการประกาศตัวแปรข้างล่างเหล่านี้จะไม่สามารถผ่านการคอมไพล์ไปได้
var x;
var y = {1, 2, 3};
var z = null;
LINQ(Language Integrated Query)
ตามชื่อแล้ว linq เป็น query ที่ติดตัวมากับภาษาเลยโดยใช้ดึงข้อมูลออกมาจาก collection ใด ๆ ก็ได้ และถ้า MS ออกแบบ query มาใหม่ ก็คงจะไม่ทำให้ syntax มันใช้งานยากหรอกครับ linq นั้นมีรูปแบบที่ใกล้เคียงกับ SQL มาก ๆ keyword นั้นก็คล้ายคลึงกับ SQL มากนัก ทั้ง "SELECT", "FROM", "WHERE", "GROUPBY", "ORDERBY", "DISTINCT"
ส่วนตัวอย่างขอดัดแปลงจากบล็อกของคุณ pok ละกันครับ เค้าเขียนไว้ดีแล้ว
string[] aBunchOfWords = {"One","Two", "Hello",
"World", "Four", "Five"};

var result = from s in aBunchOfWords
where s.Length == 5
select s;

foreach(var str in result) {
Console.WriteLine(str);
}
มีตัวอย่างอีกเยอะแยะใน 101 LINQ Samples จาก msdn/vc#/future

จริง ๆ แล้วยังเหลือ feature เจ๋ง ๆอีกอย่างเช่น "Extension methods", "Lambda expressions", "Object and collection initializers", "Anonymous types", "Implicitly typed arrays", "Expression trees" โดยเฉพาะ Lambda expressions นั้นถ้านำมาใช้ร่วมกับ anonymous method ใน C# 2.0 นั้นจะได้ code ที่กระชับลงอย่างมากเลยครับ ไว้มีเวลาจะมาเขียนให้อ่านกันเพลิน ๆ

ไม่มีความคิดเห็น:

โฆษณา