C#은 C++과 다르게 위임 생성자 호출 시 부모 클래스 또는 자기 클래스 명칭을 사용하지 않는다. 아래와 같이 하면 에러가 뜬다.
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
public class Test
{
int mVal = 0;
public int ValProp
{
get { return mVal; }
set { mVal = value; }
}
public Test()
{
Console.WriteLine("기본 생성자");
}
public Test(int Val) : Test()
{
ValProp = Val;
Console.WriteLine("int형 생성자");
}
static void Main()
{
}
}
}
아래와 같이 바꿔주면 정상적으로 출력이 된다. 동일하게 this.으로 접근 가능하다. 상속받은 변수 또한 접근이 가능하다.
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
public class Test
{
int mVal = 0;
public int ValProp
{
get { return mVal; }
set { mVal = value; }
}
public Test()
{
Console.WriteLine("기본 생성자");
this.mVal = 10; // 대입
}
public Test(int Val) : this()
{
ValProp = Val;
Console.WriteLine("int형 생성자");
}
static void Main()
{
Test test = new Test(50);
Console.WriteLine(test.ValProp);
}
}
}
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# 가변 길이 배열 (Variable Length Array) (0) | 2022.08.02 |
---|---|
C# 부모 클래스 함수 호출과 오버라이딩 (base / override) (0) | 2022.07.28 |
C# 추상 클래스 (abstract) (0) | 2022.07.28 |
C# 인터페이스 (interface) (0) | 2022.07.28 |
C# 클래스 접근 제한자 (Access Modifier) (0) | 2022.07.27 |