Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengakses Objek Jenis Tanpa Nama di Luar Skopnya dalam C#?

Bagaimanakah Saya Boleh Mengakses Objek Jenis Tanpa Nama di Luar Skopnya dalam C#?

DDD
Lepaskan: 2024-12-29 22:01:25
asal
762 orang telah melayarinya

How Can I Access Anonymous Type Objects Outside Their Scope in C#?

Mengakses Objek Jenis Tanpa Nama Di Luar Skopnya dalam C#

Mengakses ahli jenis tanpa nama di luar skop yang diisytiharkan boleh menimbulkan cabaran dalam C#, terutamanya apabila cuba memindahkan data antara kaedah. Pertimbangkan kod berikut:

void FuncB()
{
    var obj = FuncA();
    Console.WriteLine(obj.Name);
}

FuncA()
{
    var a = (from e in DB.Entities
        where e.Id == 1
        select new {Id = e.Id, Name = e.Name}).FirstOrDefault();

    return a;
}
Salin selepas log masuk

Malangnya, kod ini akan mengakibatkan ralat kerana obj tidak lagi boleh diakses di luar FuncA().

Pendekatan Berhati-hati

Secara umumnya disyorkan untuk mengelak daripada mengakses objek jenis awanama di luar skopnya. Amalan ini boleh membawa kepada kod yang mengelirukan dan kemungkinan ralat. Walau bagaimanapun, jika mengakses objek jenis tanpa nama di luar skopnya amat diperlukan, terdapat penyelesaian yang dikenali sebagai "cast by example."

The Cast by Example Hack

Ini teknik melibatkan penggunaan kaedah CastByExample untuk menghantar objek jenis tanpa nama kepada jenis yang dikehendaki. Berikut ialah contoh:

public void FuncB()
{
    var example = new { Id = 0, Name = string.Empty };

    var obj = CastByExample(FuncA(), example);
    Console.WriteLine(obj.Name);
}

private object FuncA()
{
    var a = from e in DB.Entities
            where e.Id == 1
            select new { Id = e.Id, Name = e.Name };

    return a.FirstOrDefault();
}

private T CastByExample<T>(object target, T example)
{
    return (T)target;
}
Salin selepas log masuk

Dengan menyediakan objek contoh, CastByExample() boleh membuat kesimpulan jenis yang betul dan menghantar objek sasaran kepada jenis itu.

Awas

Walaupun teknik pelakon melalui contoh boleh berguna, ia harus digunakan dengan berhati-hati. Amalan ini boleh mengakibatkan ralat penghantaran jika objek sasaran tidak sepadan dengan contoh yang disediakan. Sentiasa dinasihatkan untuk mempertimbangkan pendekatan alternatif untuk mengakses objek jenis tanpa nama di luar skopnya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Objek Jenis Tanpa Nama di Luar Skopnya dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan