Penjelasan Nested Types C# Asp.Net

Type yang didefinisikan dalam class atau struct disebut nested type. Sebagai contoh:
class Container
{
    class Nested
    {
        Nested() { }
    }
}
Terlepas dari apakah tipe data luarnya adalah class atau struct, tipe data nested default menjadi private; Nested type hanya dapat diakses dari containing type.

Pada contoh sebelumnya, class Nested tidak dapat diakses oleh tipe eksternal. Kita juga dapat menentukan modifier akses untuk menentukan aksesibilitas tipe yang dinested, sebagai berikut:
  1. Nested types class dapat public protected, internal, protected internal, private atau private protected
  2. Namun, mendefinisikan class protected, protected oleh internal atau private protected, nested class yang diseal menghasilkan peringatan kompilator CS0628, "member yang protected baru dinyatakan dalam class yang diseal." 
  3. Nested types struct bisa bersifat publik, internal, atau private. Contoh berikut membuat Nested class public :
class Container
{
    public class Nested
    {
        Nested() { }
    }
}
Type nested, atau inner, dapat mengakses tipe yang containing, atau outer, type. Untuk mengakses tipe contanining, passing sebagai argumen pada konstruktor Type nested. Sebagai contoh:
public class Container
{
    public class Nested
    {
        private Container parent;

        public Nested()
        {
        }
        public Nested(Container parent)
        {
            this.parent = parent;
        }
    }
}
nested type memiliki akses ke semua member yang dapat diakses dengan type containing. Ini dapat mengakses member type private and protected dari type containing, termasuk member protected yang diwarisinya.

Dalam deklarasi sebelumnya, nama lengkap class Nested adalah Container.Nested. Ini adalah nama yang digunakan untuk membuat instance baru dari class nested, sebagai berikut:
Container.Nested nest = new Container.Nested();
Previous
Next Post »