반응형
먼저 예제로~ (아래쪽엔 설명)
예제 - Tuple 을 리턴하는 메소드
private (bool isValid, string hh, string mm) getControlValues()
{
if (comboBox_hh.SelectedItem == null || comboBox_mm.SelectedItem == null)
{
MessageBox.Show("Time is required.");
return (false, "", "");
}
string hh = comboBox_hh.SelectedItem.ToString();
string mm = comboBox_mm.SelectedItem.ToString();
return (true, hh, mm);
}
메소드 리턴 타입을 ( ) 안에 타입과 함께 변수명을 지정해줍니다.
(bool isValid, string hh, string mm)
return 을 그 타입에 맞게 리턴합니다.
return (true, hh, mm);
사용 - 위에서 생성한 메소드
private void addSchedule()
{
var tuple = getControlValues(); // 위에서 생성했던것
if (tuple.isValid)
{
if (mForm.getMainDbHelper().addSchedule(tuple.hh, tuple.mm) > 0)
mForm.doAfterScheduleUpdated();
else
{
string sqlErr = mForm.getMainDbHelper().getLastErrMessage();
if (!String.IsNullOrEmpty(sqlErr))
MessageBox.Show(mForm.getMainDbHelper().getLastErrMessage());
else
MessageBox.Show("already exists.");
}
}
}
메소드에서 리턴 받아온 tuple 은 메소드의 리턴타입에 정의된 변수명으로 사용 가능합니다.
공식 문서 설명 요약
튜플 선언
(double, int) t1 = (4.5, 3);
t1.Item1 // 4.5
t1.Item2 // 3
// 또는
var t = (Sum: 4.5, Count: 3);
t.Sum // 4.5
t.Count // 3
// 또는
var sum = 4.5;
var count = 3;
var t = (sum, count);
t.sum // 4.5
t.count // 3
// 명시적으로 tuple 을 변수명을 지정하지 않아도 필드이름에서 유추됨.
튜플 비교
- 요소가 같아야함
- 요소 명은 관련없음. 순서가 중요
(int a, byte b) left = (5, 10);
(long a, int b) right = (5, 10);
Console.WriteLine(left == right); // output: True
Console.WriteLine(left != right); // output: False
var t1 = (A: 5, B: 10);
var t2 = (B: 5, A: 10);
Console.WriteLine(t1 == t2); // output: True
Console.WriteLine(t1 != t2); // output: False
튜플과 System.Tuple 차이
System.ValueTuple 형식으로 지원되는 C# 튜플은 System.Tuple 형식으로 표현되는 튜플과 다릅니다. 주요 차이점은 다음과 같습니다.
- ValueTuple 형식은 값 형식입니다. Tuple 형식은 참조 형식입니다.
- ValueTuple 형식은 변경할 수 있습니다. Tuple 형식은 변경할 수 없습니다.
- ValueTuple 형식의 데이터 멤버는 필드입니다. Tuple 형식의 데이터 멤버는 속성입니다.
728x90
반응형
'C# 기술' 카테고리의 다른 글
[C#] Tuple 사용하기 (0) | 2021.10.20 |
---|---|
[Selenium] “Element Is Not Clickable at Point” 해결방법 (0) | 2021.08.29 |
[C#] Class 를 file 로 저장/로드하기 (class to file, file to class) Serialize (0) | 2021.04.04 |
[LocalDB] Table key column Auto Increase 설정하기 (0) | 2020.11.06 |
[log4net] Visual Studio 2019 에서 log4net 사용하기 (0) | 2020.11.03 |
댓글