Cara menggunakan jenis tanpa nama di C #

Jenis tanpa nama adalah jenis yang tidak mempunyai nama. Anda boleh menggunakan jenis tanpa nama untuk merangkumi sekumpulan sifat baca sahaja di dalam satu unit - dan anda tidak perlu menentukan jenis anonim terlebih dahulu. Artikel ini membincangkan apakah jenis anonim, mengapa ia penting, dan bagaimana kita dapat bekerja dengan jenis tanpa nama di C #.

Untuk bekerja dengan contoh kod yang disediakan dalam artikel ini, anda harus memasang Visual Studio 2019 di sistem anda. Sekiranya anda belum mempunyai salinannya, anda boleh memuat turun Visual Studio 2019 di sini. 

Buat projek aplikasi konsol di Visual Studio

Pertama, mari buat projek aplikasi konsol .NET Core di Visual Studio. Dengan mengandaikan Visual Studio 2019 dipasang di sistem anda, ikuti langkah-langkah yang digariskan di bawah untuk membuat projek aplikasi konsol .NET Core baru di Visual Studio.

  1. Lancarkan ID Studio Visual.
  2. Klik pada "Buat projek baru."
  3. Di tetingkap "Buat projek baru", pilih "Aplikasi Konsol (.NET Core)" dari senarai templat yang dipaparkan.
  4. Klik Seterusnya.
  5. Di tetingkap "Konfigurasikan projek baru anda" yang ditunjukkan di sebelah, tentukan nama dan lokasi untuk projek baru.
  6. Klik Buat.

Ini akan membuat projek aplikasi konsol .NET Core yang baru di Visual Studio 2019. Kami akan menggunakan projek ini di bahagian seterusnya artikel ini untuk menggambarkan bagaimana kita dapat bekerja dengan jenis tanpa nama di C #.

Fahami jenis tanpa nama dalam C #

Pada dasarnya jenis tanpa nama adalah jenis rujukan dan boleh didefinisikan menggunakan kata kunci var. Anda boleh memiliki satu atau lebih sifat dalam jenis tanpa nama tetapi semuanya hanya boleh dibaca. Berbeza dengan kelas C #, jenis tanpa nama tidak boleh memiliki bidang atau kaedah - hanya boleh mempunyai sifat.

Anda boleh mengakses jenis tanpa nama atau sifatnya dalam kaedah di mana jenis anonim telah ditentukan. Dengan kata lain, kebolehcapaian jenis tanpa nama terhad kepada skop di mana ia telah ditentukan.

Gunakan jenis tanpa nama dalam C #

Sekarang mari kita menggali beberapa kod. Pertimbangkan jenis tanpa nama berikut.

var pengarang = baru

{

  FirstName = "Joydip",

  Nama Akhir = "Kanjilal",

  Alamat = "Hyderabad, INDIA"

};

Dalam coretan kod sebelumnya, pengarang adalah nama contoh jenis tanpa nama yang dibuat menggunakan kata kunci baru. (Nama jenis tanpa nama itu sendiri hanya diketahui oleh penyusunnya.) Jenis tanpa nama ini mengandungi tiga sifat, iaitu FirstName, LastName, dan Alamat. Semua sifat ini adalah jenis rentetan. Perhatikan bahawa semasa bekerja dengan jenis tanpa nama, anda tidak perlu menentukan jenis harta tanah sebelum memulakannya.

Anda boleh menggunakan coretan kod berikut untuk mengakses ketiga-tiga sifat jenis tanpa nama di atas.

Console.WriteLine ("Nama: {0} {1}", pengarang.FirstName, pengarang.LastName);

Console.WriteLine ("Alamat: {0}", author.Address);

Gunakan jenis tanpa nama bersarang di C #

Jenis tanpa nama boleh disarang juga. Maksudnya, anda boleh mempunyai jenis tanpa nama sebagai harta di dalam jenis tanpa nama yang lain. Berikut adalah contoh yang menggambarkan perkara ini.

var pengarang = baru

{

  FirstName = "Joydip",

  Nama Akhir = "Kanjilal",

  Alamat = baru {Bandar = "Hyderabad", Negara = "INDIA"}

};

Anda boleh mengakses sifat jenis tanpa nama bersarang seperti yang ditunjukkan dalam coretan kod yang diberikan di bawah.

Console.WriteLine ("Nama: {0} {1}", pengarang.FirstName, pengarang.LastName);

Console.WriteLine ("Alamat: {0}", author.Address.City);

Program lengkap diberikan di bawah untuk rujukan anda.

kekosongan statik Utama (string [] args)

{

  var pengarang = baru

  {

     FirstName = "Joydip",

     Nama Akhir = "Kanjilal",

     Alamat = baru {Bandar = "Hyderabad", Negara = "INDIA"}

  };

  Console.WriteLine ("Nama: {0} {1}", pengarang.FirstName, pengarang.LastName);

  Console.WriteLine ("Alamat: {0}", author.Address.City);

  Konsol. Baca ();

}

Gunakan jenis tanpa nama dengan LINQ 

Klausa Pilih di LINQ membuat dan mengembalikan jenis anonim sebagai hasilnya. Coretan kod berikut menggambarkan perkara ini.

Pertimbangkan kelas berikut bernama Pengarang.

Pengarang kelas awam

{

  id int awam {dapatkan; menetapkan; }

  rentetan awam FirstName {get; menetapkan; }

  rentetan umum LastName {get; menetapkan; }

}

Coretan kod berikut menunjukkan bagaimana anda boleh membuat senarai pengarang.

Pengarang IList =

Senarai baru ()

{

  Pengarang baru () {Id = 1, FirstName = "John", LastName = "Willey"},

  Pengarang baru () {Id = 2, FirstName = "Steve", LastName = "Smith"},

  Pengarang baru () {Id = 3, FirstName = "Bill", LastName = "Ruffner"},

  Pengarang baru () {Id = 4, FirstName = "Joydip", LastName = "Kanjilal"}

};

Dan coretan kod seterusnya menunjukkan bagaimana anda dapat memanfaatkan klausa Pilih di LINQ bersama dengan jenis anonim untuk mengembalikan hasilnya setelah pelaksanaan pertanyaan.

hasil var = dari penulis dalam memilih baru

{

   Id = a.Id,

   Nama = a.FirstName + "\ t" + a.LastName

};

Anda kini boleh memaparkan Id dan nama pengarang di tetingkap konsol seperti yang ditunjukkan dalam coretan kod di bawah.

foreach (hasil data var)

      Console.WriteLine (data.Name);

Program lengkap diberikan di bawah untuk rujukan anda.

Pengarang kelas awam

    {

        id int awam {dapatkan; menetapkan; }

        rentetan awam FirstName {get; menetapkan; }

        rentetan umum LastName {get; menetapkan; }

    }

    Program kelas

    {

        kekosongan statik Utama (string [] args)

        {

            Pengarang IList = Senarai baru () {

                        Pengarang baru () {Id = 1, FirstName = "John",

                                      Nama Akhir = "Willey"},

                        Pengarang baru () {Id = 2, FirstName = "Steve",

                                      Nama Akhir = "Smith"},

                        Pengarang baru () {Id = 3, FirstName = "Bill",

                                      Nama Akhir = "Ruffner"},

                        Pengarang baru () {Id = 4, FirstName = "Joydip",

                                      Nama Akhir = "Kanjilal"}

                };

            hasil var = dari a dalam pengarang

                         pilih baru

                         {

                             Id = a.Id,

                             Nama = a.FirstName + "\ t" + a.LastName

                         };

            foreach (hasil data var)

                Console.WriteLine (data.Name);

            Konsol. Baca ();

        }

    }

Jenis tanpa nama membolehkan anda membuat jenis dan membuatnya dengan cepat tanpa perlu menyatakan jenisnya lebih awal. Dari sudut pandangan CLR, jenis tanpa nama hanyalah jenis rujukan yang lain. Penyusun memberikan nama untuk setiap jenis tanpa nama di bawah sampul.

Jenis tanpa nama berasal dari kelas Objek. Inilah sebabnya mengapa anda boleh menghantar jenis anonim hanya ke contoh jenis Objek. Perhatikan juga bahawa jenis kaedah yang dikembalikan, harta, acara, perwakilan, dan lain-lain tidak boleh menjadi jenis tanpa nama.

Cara melakukan lebih banyak perkara di C #:

  • Bilakah menggunakan kelas abstrak vs antara muka dalam C #
  • Cara bekerja dengan AutoMapper di C #
  • Cara menggunakan ungkapan lambda dalam C #
  • Cara bekerjasama dengan delegasi Action, Func, dan Predicate di C #
  • Cara menggunakan Dapper ORM di C #
  • Cara melaksanakan pembalak sederhana di C #
  • Cara bekerja dengan log4net di C #
  • Cara bekerja dengan perwakilan di C #
  • Cara bekerja dengan atribut di C #
  • Cara menggunakan corak reka bentuk flyweight di C #
  • Cara melaksanakan corak reka bentuk repositori di C #
  • Meneroka kaedah maya dan abstrak dalam C #
  • Cara bekerja dengan refleksi di C #
  • Cara bekerja dengan pemantau sistem fail di C #