> 백엔드 개발 > C++ > C#에서 참조로 속성 전달을 어떻게 시뮬레이션할 수 있나요?

C#에서 참조로 속성 전달을 어떻게 시뮬레이션할 수 있나요?

Barbara Streisand
풀어 주다: 2025-01-11 08:50:42
원래의
995명이 탐색했습니다.

How Can I Simulate Passing Properties by Reference in C#?

C# 속성 참조별 전달 시뮬레이션

C#에서는 참조로 속성을 직접 전달하는 것이 지원되지 않습니다. 그러나 여러 기술이 이러한 동작을 모방합니다.

1. 반환 값 방법:

가장 간단한 접근 방식은 메서드에서 속성 값을 반환하고 이를 다시 할당하는 것입니다.

<code class="language-csharp">string GetString(string input)
{
    return input;
}

void Main()
{
    var person = new Person();
    person.Name = GetString("test");
}</code>
로그인 후 복사

2. 대리인 기반 접근 방식:

대리자는 속성의 setter 메서드를 나타내어 간접적인 수정이 가능합니다.

<code class="language-csharp">void SetString(string input)
{
    //  Assign 'input' to the relevant property here.
}

void Main()
{
    var person = new Person();
    GetString("test", SetString); // 'GetString' would need to invoke 'SetString'
}</code>
로그인 후 복사

3. LINQ 표현 기법:

LINQ 식은 속성 값에 액세스하고 조작하는 보다 정교한 방법을 제공합니다.

<code class="language-csharp">void GetString<T>(string input, T target, Expression<Func<T, string>> outExpr)
{
    // Use the expression to assign 'input' to the property.  Requires expression tree manipulation.
}

void Main()
{
    var person = new Person();
    GetString("test", person, x => x.Name);
}</code>
로그인 후 복사

4. 반사 기반 솔루션:

Reflection은 속성에 동적으로 액세스하고 수정하기 위한 가장 유연하지만 잠재적으로 느린 방법을 제공합니다.

<code class="language-csharp">void GetString(string input, object target, string propertyName)
{
    // Use reflection to set the property value.
}

void Main()
{
    var person = new Person();
    GetString("test", person, nameof(Person.Name));
}</code>
로그인 후 복사

각 방법에는 장단점이 있습니다. 반환 값 방법이 가장 쉬운 반면, 리플렉션은 유연성이 가장 높지만 성능 오버헤드가 발생합니다. 대리자 및 LINQ 식은 다양한 수준의 복잡성을 지닌 중간 솔루션을 제공합니다. 최선의 선택은 특정 요구 사항과 성능 고려 사항에 따라 달라집니다.

위 내용은 C#에서 참조로 속성 전달을 어떻게 시뮬레이션할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿