Menukar Nilai dalam Senarai Struktur
Apabila bekerja dengan senarai struktur, seseorang mungkin menghadapi ralat semasa cuba mengubah suai elemen. Isu ini timbul disebabkan oleh semantik jenis nilai bagi struct, yang mencipta kejadian berasingan untuk setiap pembolehubah jenis nilai. Akibatnya, apabila elemen struct disalin ke dalam pembolehubah lain, pengubahsuaiannya tidak menjejaskan elemen asal.
Penyelesaian kepada dilema ini terletak pada fakta bahawa struct boleh mendedahkan antara muka. Dengan mencipta antara muka dengan set aksesori untuk harta yang diingini, seseorang boleh mengubah suai struct asas melalui rujukan antara muka, yang menunjuk ke objek berkotak. Kod berikut menunjukkan konsep ini:
public interface IMyStructModifier { String Name { set; } } public struct MyStruct : IMyStructModifier { ... } List<Object> obList = new List<object>(); obList.Add(new MyStruct("ABC")); obList.Add(new MyStruct("DEF)); // Using a boxed object MyStruct temp = (MyStruct)obList[1]; temp.Name = "Gishu"; // Using the interface IMyStructModifier temp2 = obList[1] as IMyStructModifier; temp2.Name = "Now Gishu";
Kaedah ini membenarkan pengubahsuaian elemen dalam senarai struktur, walaupun ia mungkin mengakibatkan tinju. Oleh itu, apabila mempertimbangkan reka bentuk sesuatu jenis, keperluan untuk penyimpanan dan pengubahsuaian koleksi tidak seharusnya mengatasi pilihan semantik yang sesuai antara kelas dan struktur.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah suai nilai dalam senarai struktur dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!