728x90
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class foo
{
public int a;
}
class bar : foo
{
public int b;
}
namespace _20240305_변석진
{
internal class Testing
{
static void Main(string[] arg)
{
foo f = new foo();
bar b = new bar();
b.a = 8;
int a = f.a;
}
}
}
코드
디버깅 중 메모리 창에 &에 변수명을 치면 주소가 나온다
&f에있는 값을 거꾸로 보면
&f.a의 주소값근처가 나온다
f는 값으로 클래스의 주소를 가지고 있기 때문에 멤버변수의 주소 근처로 나온것같다
인스턴스의 값은 주소를 가지고 있는 참조형이라는 것을 알 수 있을것 같다.
https://www.delftstack.com/ko/howto/csharp/pass-objects-by-reference-in-csharp/
C#에서 참조로 개체 전달
기본적으로 모든 값 형식 변수는 값으로 전달되고 모든 참조 형식 변수는 C#의 함수에 대한 참조로 전달됩니다.
www.delftstack.com
여기서는 ref를 붙이지 않고 넘기면 포인터가 복사되는것처럼 작동 된다는 것같고 ref 붙이면 그대로 간다고 설명하는것 같다.
728x90
'C#' 카테고리의 다른 글
나만의 정리 객체지향 C# (0) | 2024.03.08 |
---|---|
abstract (1) | 2024.03.06 |
C# 은 클래스끼리의 기본 대입, 매개변수 전달이 참조형식으로 전달된다 (0) | 2024.03.05 |
c++과 c# 차이 (1) | 2024.03.05 |