Rumah >pembangunan bahagian belakang >C++ >Bolehkah Jenis Generik dalam C# Dihantar kepada Jenis Tertentu?
Bolehkah Jenis Generik Dipancarkan kepada Jenis Tertentu?
Dalam pertanyaan baru-baru ini, seorang pengaturcara daripada latar belakang C meminta bantuan dengan menghantar jenis generik kepada jenis tertentu dalam C#. Kod yang disediakan:
T HowToCast<T>(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; }
gagal dihimpun, dengan pengkompil mengadu tentang ketidakupayaan untuk menukar daripada 'T' kepada rentetan.
Memahami isu itu memerlukan pengiktirafan itu, walaupun berada dalam if pernyataan, pengkompil tidak boleh membuat kesimpulan bahawa 'T' ialah jenis rentetan. Akibatnya, pemutus gagal. Untuk menangani perkara ini, seseorang mesti menghantar 'T' ke 'objek' terlebih dahulu, kerana mana-mana 'T' boleh dihantar ke 'objek', dan kemudian menghantar lebih jauh daripada 'objek' kepada jenis khusus yang dikehendaki, seperti 'rentetan'.
Kod yang diperbetulkan:
T newT1 = (T)(object)"some text"; string newT2 = (string)(object)t;
menunjukkan pendekatan yang betul.
Atas ialah kandungan terperinci Bolehkah Jenis Generik dalam C# Dihantar kepada Jenis Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!