Value 튜플
- 여러 필드를 담을 수 있는 구조체. (Tuple과 ValueTuple은 다르다!)
- System.ValueTuple 구조체를 기반으로 만들어짐.
- 명명되지 않은 튜플과 명명된 튜플끼리는 필드의 수와 형식이 같다면 할당이 가능함.
var tuple = (Name: "테스트", Age : 15); // 명명된 튜플
var tuple2 = ("테스트", 15); // 명명되지않은 튜플
var tuple = (Name: "테스트", Age: 15);
var (name, age) = tuple;
Console.WriteLine(name);
var (name2, _) = tuple; // 특정 필드를 무시할 수 있음
Console.WriteLine(name2);
Tuple과 ValueTuple
- Tuple은 클래스고, ValueTuple은 구조체이다.
- Tuple은 item들이 속성이며, 읽기 전용이라 변경이 불가능하다.
- ValueTuple은 item들이 필드이며, 변경이 가능하다.
- 일반적으로는 ValueTuple을 이야기하는 듯.
MS 무명 형식과 튜플 형식 중에서 선택
https://docs.microsoft.com/ko-kr/dotnet/standard/base-types/choosing-between-anonymous-and-tuple
무명 형식
- 아래와 같이 선언가능하다.
var myInstance = new { Name = "이름", Age = "15" };
- 읽기 전용이라 한번 할당하고 나면 변경이 불가능하다.
- 한번 만들고 다시는 사용하지 않을 때 유용한데, 특히 LINQ와 함께 사용되는 편.
- 튜플과 많이 비교된다.
인터페이스의 프로퍼티
- 인터페이스는 메서드뿐만 아니라 프로퍼티와 인덱서를 가질 수 있다.
- 인터페이스의 프로퍼티는 자동 구현 프로퍼티와 동일한 형태를 가지며, 파생 클래스는 반드시 구현해야 한다.
- 반드시 구현해야 하지만, 파생 클래스에서도 역시 자동 구현으로 구현하여도 된다.
interface IBaseInter
{
int MyValue{ get; set; }
}
class MyClass : IBaseInter
{
private int _myValue;
public int MyValue
{
get{ return _myValue; }
set{ _myValue = value; }
}
}
추상 클래스와 추상 프로퍼티
- 일반 클래스와 동일하게 구현된 프로퍼티도 가질 수 있지만, 인터페이스처럼 구현되지 않은 프로퍼티도 가질 수 있다.
- 차이는 파생 클래스의 강제 구현의 여부
abstract class MyAbClass
{
abstract int MyProperty
{
get; set;
}
}
'🌍 C# Study > C# 기초' 카테고리의 다른 글
C# 복습하기 10) 일반화 프로그래밍 (0) | 2021.04.11 |
---|---|
C# 복습하기 9) 배열, 컬렉션, 인덱서 (0) | 2021.04.11 |
C# 복습하기 7) 인터페이스와 추상 클래스 (0) | 2021.04.10 |
C# 복습하기 6) 클래스 (0) | 2021.04.09 |
C# 복습하기 5) 메소드 (0) | 2021.04.09 |