Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melepasi Hartanah melalui Rujukan dalam C#?

Bagaimanakah Saya Boleh Melepasi Hartanah melalui Rujukan dalam C#?

Susan Sarandon
Lepaskan: 2025-01-11 06:34:42
asal
981 orang telah melayarinya

How Can I Pass Properties by Reference in C#?

Melalui 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");
}
Salin selepas log masuk

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");
}
Salin selepas log masuk

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");
}
Salin selepas log masuk

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");
}
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan