protect
ถ้าเอาบทความไปเผยแพร่แล้วไม่ให้เครดิต ดำเนินคดีด้วย พรบ. คอมพิวเตอร์ฉบับใหม่ ขั้นสูงสุดและไม่ยอมความครับ
วันพฤหัสบดีที่ 10 กันยายน พ.ศ. 2558
Indexer ใน C# ตอนที่ 2
เรามาต่อจากตอนที่ 1 กันเลย
ในตอนที่แล้วผมได้เขียน code ที่ indexer มี signuature เป็น int อย่างเดียว ที่นี้เราลองเพิ่ม Indexer อีกหนึ่งตัวน่ะครับที่มี signature เป็น string.
public int this[string name]
{
get
{
for (int i = 0; i < 7; i++)
{
if (nameOfDay[i] == name)
return i;
}
return 99;
}
}
ใน IL code เราก็จะได้ method ที่ชื่อ get_Item อีกหนึ่งตัวแต่ signature ตัวใหม่จะเป็น get_Item : int32(string) คือรับ parameter เป็น string และ return int กลับไปให้ caller.
นอกจากนั้นเรายังจะได้ property อีกหนึ่งตัวที่ชื่อ Item : instance int32(string)
ต่อไปเราลองมาเพิ่ม C# code จาก read only มาเป็น property ที่สามารถ update ได้ ตาม code ข้างล่างครับ
public string this[int index]
{
get
{
if (index > nameOfDay.Length)
return "";
else
return nameOfDay[index];
}
set
{
if (index > nameOfDay.Length)
throw new Exception("The day should have only 7 day");
else
nameOfDay[index] = value;
}
}
จาก นั้นลอง compile code แล้วมาดู IL code กันครับจะเห็น method ที่เพิ่มเข้ามาอีก 1 method คือ set_Item : void(int 32, string) จะเห็นว่า signature จะเปลี่ยนมาเป็นรับค่า 2 parameter คือ int กับ string
โดยที่ parameter ชนิด int คือ ตำแน่งของ index และ string ก็คือ value ที่ assign ให้กับ index ตัวนั้น
จบแล้วครับสำหรับ Indexer ในภาษา C# และภาษา IL พบกันใหม่บทความหน้าครับ
TuChay
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น