C\#클래스 와 구조의 차이 사례 분석
1.기본 개념:
클래스:인용 형식,더미 에 저장,스 택 에 인용 주 소 를 저장 합 니 다.방법의 전송 에 서 는 주소 의 인용 만 전송 하고 가리 키 는 대상 을 수정 하면 원래 대상 의 값 에 영향 을 주 며 전송 에 메모리 가 적 습 니 다.
구조:값 유형,스 택 에 저장 되 어 전송 과정 에서 전체 대상 의 사본 을 전송 하고 대상 을 가리 키 는 값 을 수정 하면 원래 의 대상 에 영향 을 주지 않 으 며 전송 에 메모리 가 많이 소모 된다.
2.실례 코드 는 다음 과 같다.
class Program
{
static void Main(string[] args)
{
/* 10*/
TestClass TC1 = new TestClass();
TC1.x = 10;
TC1.y = "10";
Console.WriteLine("/* TC1 10*/");
Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);
TC1.x = 20;
TC1.y = "20";
Console.WriteLine("/* TC1 20*/");
Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);
/* */
Console.WriteLine("/* TC2 TC1, 10*/");
TestClass TC2 = TC1;
TC2.x = 10;
TC2.y = "10";
Console.WriteLine("/* */");
Console.WriteLine("TC1 x={0} y={0}", TC1.x, TC1.y);
Console.WriteLine("TC2 x={0} y={0}", TC2.x, TC2.y);
/* */
Console.WriteLine("/* TS1 10*/");
TestStruct TS1 = new TestStruct();
TS1.x = 10;
TS1.y = "10";
Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
Console.WriteLine("/* TS1 20*/");
TS1.x = 20;
TS1.y = "20";
Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
/* */
Console.WriteLine("/* TS2 TS1, 10*/");
TestStruct TS2 = TS1;
TS2.x = 10;
TS2.y = "10";
Console.WriteLine("/* */");
Console.WriteLine("TS1 x={0} y={0}", TS1.x, TS1.y);
Console.WriteLine("TS2 x={0} y={0}", TS2.x, TS2.y);
Console.ReadLine();
}
}
public class TestClass
{
public int x;
public string y;
}
public struct TestStruct
{
public int x;
public string y;
}
코드 실행 결 과 는 다음 그림 과 같 습 니 다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.