Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghantar Objek kepada Jenis Generik dalam C#?

Bagaimanakah Saya Boleh Menghantar Objek kepada Jenis Generik dalam C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-06 04:03:46258semak imbas

How Can I Cast an Object to a Generic Type in C#?

Menghantar Objek kepada Jenis Generik

Dalam C#, tidak mungkin untuk menghantar pembolehubah objek jenis kepada pembolehubah generik arbitrari jenis T. Walau bagaimanapun, terdapat dua teknik yang boleh mencapai hasil yang serupa:

1. Taip dengan Generik:

Operator (T) boleh digunakan dengan generik untuk menghantar objek kepada jenis tertentu. Contohnya:

using System;

public class MyClass
{
    public static T CastObject<T>(object input)
    {
        return (T)input;
    }
}

Kaedah ini akan cuba menghantar objek input kepada jenis generik T yang ditentukan.

2. Penukaran dengan Convert.ChangeType():

Kaedah Convert.ChangeType() boleh digunakan untuk menukar objek kepada jenis tertentu menggunakan objek Type yang mewakili jenis sasaran. Contohnya:

public static T ConvertObject<T>(object input)
{
    Type targetType = typeof(T);
    return (T)Convert.ChangeType(input, targetType);
}

Adalah penting untuk ambil perhatian bahawa pendekatan ini bergantung pada objek yang melaksanakan jenis yang diingini atau menyediakan penukaran yang sesuai.

Petua untuk Bekerja dengan Jenis Generik:

  • Utamakan keselamatan jenis dan elakkan penuangan apabila mungkin.
  • Jika jenis mempunyai antara muka yang sama, hantar ke antara muka itu sebaliknya.
  • Gunakan generik untuk mencipta kod boleh guna semula yang berfungsi dengan pelbagai jenis.
  • Pertimbangkan pemfaktoran semula jika penghantaran tidak boleh dielakkan.
  • Kendalikan kes tepi yang melibatkan pantulan atau nilai dinamik dengan berhati-hati.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Objek kepada Jenis Generik dalam 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