


Bagaimanakah Saya Boleh Melepasi Hartanah melalui Rujukan dalam C#?
Jan 11, 2025 am 06:34 AMMelalui sifat dengan rujukan dalam C#
Dalam C#, menghantar sifat melalui rujukan bermakna mengubah suai nilai harta itu dalam satu kaedah dan mencerminkan perubahan tersebut dalam kaedah lain. Walau bagaimanapun, sifat tidak diluluskan secara rujukan secara lalai. Terdapat pelbagai cara untuk mencapai tingkah laku ini.
Nilai pulangan
Salah satu cara ialah mengembalikan nilai daripada kaedah getter dan mengemas kini sifat dalam kaedah panggilan.
public string GetString(string input, string output) { if (!string.IsNullOrEmpty(input)) { return input; } return output; } public void Main() { Person person = new Person(); person.Name = GetString("test", person.Name); Debug.Assert(person.Name == "test"); }
Delegasi
Pendekatan lain ialah menggunakan perwakilan yang mengambil tindakan yang menetapkan harta itu.
public void GetString(string input, Action<string> setOutput) { if (!string.IsNullOrEmpty(input)) { setOutput(input); } } public void Main() { Person person = new Person(); GetString("test", value => person.Name = value); Debug.Assert(person.Name == "test"); }
Ekspresi LINQ
Properti juga boleh dikemas kini melalui refleksi menggunakan ungkapan LINQ.
public void GetString<T>(string input, T target, Expression<Func<T, string>> outExpr) { if (!string.IsNullOrEmpty(input)) { MemberExpression expr = (MemberExpression)outExpr.Body; PropertyInfo prop = (PropertyInfo)expr.Member; prop.SetValue(target, input, null); } } public void Main() { Person person = new Person(); GetString("test", person, x => x.Name); Debug.Assert(person.Name == "test"); }
Refleksi
Akhir sekali, anda boleh menggunakan refleksi untuk menetapkan nilai harta secara langsung.
public void GetString(string input, object target, string propertyName) { if (!string.IsNullOrEmpty(input)) { PropertyInfo prop = target.GetType().GetProperty(propertyName); prop.SetValue(target, input); } } public void Main() { Person person = new Person(); GetString("test", person, nameof(person.Name)); Debug.Assert(person.Name == "test"); }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepasi Hartanah melalui Rujukan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apakah jenis nilai yang dikembalikan oleh fungsi bahasa C? Apa yang menentukan nilai pulangan?

Gulc: Perpustakaan C dibina dari awal

Langkah Format Fungsi Fungsi C Langkah Penukaran Kes

Apakah definisi dan peraturan panggilan fungsi bahasa C dan apakah itu

Penggunaan dan perkongsian frasa yang berbeza

Di manakah nilai pulangan fungsi bahasa C yang disimpan dalam ingatan?

Bagaimana Perpustakaan Templat St Standard (STL) berfungsi?

Bagaimanakah saya menggunakan algoritma dari STL (jenis, mencari, mengubah, dll) dengan cekap?
