วันจันทร์ที่ 25 กรกฎาคม พ.ศ. 2559

Type of Access Modifiers (C# Reference)





Access Modifiers คืออะไร มันคือสิทธิในการเข้าถึง ในที่นี้มันจะเป็นสิทธิในการเข้าถึง method ต่างๆ คือ ใครบ้างจะสามารถเรียกเจ้า method เหล่านี้ไปใช้งานได้ ซึ่งเจ้า Access Modifier จะมีระดับในการ เข้าถึงดังนี้

Public ตามชื่อค่ะ Public ก็คือ Public ใช่แล้ว มันคือ method ที่สามารถเรียกใช้จากที่ไหนก็ได้ ไม่ว่าจะอยู่ตรงไหน เราก็สามารถเรียกใช้เจ้า Public method นี้ได้ แม้ว่า จะอยู่กันคนละ Class ก็สามารถเรียกใช้ได้

Private จะแตกต่างจาก Public คือถ้าใครจะเรียกใช้ method ตัวนี้ มันจะต้องอยู่ภายใน Class เดียวกัน พูดง่ายๆ คือ มันจะสามารถใช้ได้เฉพาะภายใน class ตัวเองเท่านั้น

Internal เป็น Modifier ที่สามารถใช้ได้ภายใน assembly เดียวกันเท่านั้น (assembly คือ project ที่อยู่ใน Solution อีกที Assembly กับ Solution คือคนละสิ่งกันนะคะ)

Protected จะเป็น modifier ที่สามารถเรียกได้หากอยู่ภายใน Class เดียวกัน หรือ เป็น Class ที่ inherit ไปเท่านั้น

**แถม**
static คืออะไร Static class หรือ Static variable คือ สิ่งที่มันสามารถแชร์ร่วมกันระหว่าง Class ชนิดเดียวกัน ซึ่งมันสามารถเปลี่ยนค่าได้ แม้ว่า Static จะแปลว่า คงที่ ก็ตาม งงมั๊ย เริ่มงงนิดๆ นะ ยกตัวอย่างเช่น เรามีรถคันนึง เพื่อนก็มีรถเหมือนกัน เราจะแชร์อะไรกับเพื่อนได้ล่ะ เราอาจจะแชร์ กฏจราจร ร่วมกันได้ static law[] อย่างงี้ เพราะ รถทุกคันต้องมีกฏจราจรร่วมกัน ต่อให้มีการออกกฏใหม่มา รถทุกคนก็ต้องทำตาม
ไอ้ครั้นจะไปแชร์ล้อรถกับเพื่อน static wheel  มันก็อาจจะทำไม่ได้ แม้ว่ารถทุกคันจะมีล้อ แต่เพราะล้อรถมันก็ไม่ได้ใส่กันได้กับรถทุกคัน นึกออกมั๊ย

เมื่อไหร่จะใช้ Static ล่ะ ก็เมื่อ
  •  เรามีรถ ไม่ใช่ล่ะ เมื่อเรามี Class เหมือนๆ กันอยู่หลายๆ Class แล้ว Class เหล่านี้ มันก็มีสิ่งที่เหมือนกัน และมันควรจะแชร์สิ่งเหล่านี้กันได้แน่ๆ ก็ให้มันเป็น static
  • ตัวแปร นี้ใช้ในหลายๆ method มั๊ย ถ้ามันจะ pop ขนาดนั้น ก็ให้มันเป็น static
  •  ถ้าไม่ใช่เลย ก็ไม่ต้องไป static มัน 
โค้ดตัวอย่างเล็กน้อย
เรามี Class ชื่อ Sample ภายใน Class Sample มี method อยู่ 2 method คือ SampleTrips กับ SamplePublic อันนึงเป็น Private อันนึง เป็น Public ตามลำดับ (ส่วน void คือ เราจะไม่มีการ return ค่าใดๆ เพราะคนเขียนก็ขี้เกียจคิดว่าจะ return อะไรดีเลย void มันซะ จะได้ไม่ต้อง return)

public class Sample
    {
       private static void SampleTrips(int e){
            int i = e;          
        }


       public static void SamplePublic(int a)
       {
           int i = a;
}    
    }

ที่นี้เรามาดูวิธีการเรียก Static method ทั้ง 2 ตัวนี้ ว่าจะเรียกยังไง ถ้า
  • มันไม่ได้อยู่ใน Class เดียวกัน 

                      สมมติว่าเรามี Class อีก Class นึง สมมติว่าชื่อ SampleClass เราจะให้ method ที่อยู่ใน SampleClass เรียก Static method ที่อยู่ใน Class Sample เราจะสามารถทำได้ดังนี้
                
                Sample.SamplePublic(integer);

                จะเห็นว่า เราจะต้อง อ้างอิงชื่อ Class ขึ้นมาก่อน จากนั้นจึง .ชื่อ method แล้วก็ใส่ parameter โดยเราจะเรียกใช้ได้ แค่ method ที่เป็น Public Static เท่านั้น ตามกฏของ Access Modifier ข้างบน
  • มันอยู่ใน Class เดียวกัน 
                              ถ้ามันอยู่ใน Class เดียวกันก็ง่ายเลย เราสามารถพิมพ์ชื่อ method ลงไปได้เลย และเราจะสามารถเรียกใช้ได้ทั้งตัวที่ เป็น Private และ Public แบบนี้

                                  SampleTrips(integer);

             SamplePublic(integer);




ทำไมของแถม มันยาวกว่าเนื้อเรื่องหลักอ่ะ  _ _!
                 



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

แสดงความคิดเห็น

About Us

Recent

Random