Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengembalikan Jenis Tanpa Nama daripada Kaedah C#?

Bagaimanakah Saya Boleh Mengembalikan Jenis Tanpa Nama daripada Kaedah C#?

DDD
DDDasal
2024-12-25 15:34:09705semak imbas

How Can I Return Anonymous Types from a C# Method?

Mengembalikan Jenis Tanpa Nama dalam C#

Dalam C#, jenis tanpa nama ialah cara mudah untuk mencipta objek sementara dengan sifat tersuai. Walau bagaimanapun, apabila ia datang untuk mengembalikan jenis tanpa nama daripada kaedah, terdapat had.

Masalah:

Bagaimanakah anda memulangkan jenis tanpa nama daripada kaedah, mempertimbangkan mengikuti kod:

public "TheAnonymousType" TheMethod(SomeParameter)
{
  using (MyDC TheDC = new MyDC())
  {
     var TheQueryFromDB = (....
                           select new { SomeVariable = ....,
                                        AnotherVariable = ....}
                           ).ToList();

      return "TheAnonymousType";
    }
}

Jawapan:

Malangnya, tidak mungkin untuk mengembalikan jenis tanpa nama terus daripada kaedah dalam C#.

Sebabnya terletak pada hakikat bahawa jenis tanpa nama disusun semasa runtime dan tidak mempunyai jenis yang diketahui pada masa penyusunan. Oleh itu, ia tidak boleh dikembalikan sebagai jenis bernama khusus, seperti "TheAnonymousType" dalam contoh anda.

Penyelesaian:

Untuk menyelesaikan pengehadan ini, anda mempunyai dua pilihan :

  1. Gunakan tanpa nama yang ditaip kuat type:
    Buat jenis anonymous yang ditaip kuat menggunakan var anonymousObject = new { ... }. Ini akan mencipta jenis bernama dengan sifat yang ditentukan, yang boleh dikembalikan daripada kaedah.
  2. Gunakan objek bekas:
    Kembalikan jenis tanpa nama sebagai sebahagian daripada objek bekas, seperti Senarai. Ini membolehkan anda memulangkan koleksi objek, termasuk jenis tanpa nama.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Jenis Tanpa Nama daripada Kaedah C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn