728x90
nameof
nameof는 변수, 형식, 또는 멤버의 이름을 문자열로 반환합니다. 이는 하드코딩된 문자열을 대체하여 유지보수성을 높이는 데 유용합니다.
- 컴파일 시 이름을 확인하므로, 오타나 잘못된 참조를 방지할 수 있습니다.
- 코드 리팩토링 시 변수 이름이 변경되면, nameof도 자동으로 업데이트됩니다.
- 주로 로깅, 예외 메시지, 또는 속성 이름을 출력하는 데 사용됩니다.
using System;
namespace NameofExample
{
class Program
{
// 속성 정의
public string NameOfTest { get; set; } = "Initial Value";
static void Main(string[] args)
{
// 변수 선언
string nameofTest = "SampleValue";
// nameof 사용
Console.WriteLine(nameof(nameofTest)); // nameofTest 출력
Console.WriteLine(nameof(NameOfTest)); // NameOfTest 출력
// 클래스 속성 사용 예제
var program = new Program();
Console.WriteLine($"속성 이름: {nameof(program.NameOfTest)}, 값: {program.NameOfTest}");
}
}
}
default
default는 형식의 기본값을 반환합니다. 값 형식과 참조 형식에 따라 반환되는 값이 다릅니다.
기본값의 차이
- 값 형식 (struct): 기본값은 0, false, 또는 초기화되지 않은 상태의 값입니다.
- 참조 형식 (class): 기본값은 null입니다.
주요 활용
- 제네릭 타입에서 기본값을 반환할 때 유용합니다.
- 초기화되지 않은 상태를 명시적으로 표현할 수 있습니다.
using System;
namespace DefaultExample
{
class Program
{
// 제네릭 메서드: 특정 조건에 따라 기본값 반환
public static T GetDefaultValue<T>(bool check)
{
if (!check)
return default(T); // 형식 T의 기본값 반환
// 예제에서는 형식 T가 숫자인 경우 42 반환
return (T)Convert.ChangeType(42, typeof(T));
}
static void Main(string[] args)
{
// int 형식 기본값
int defaultInt = default(int); // 0
Console.WriteLine($"int 기본값: {defaultInt}");
// string 형식 기본값
string defaultString = default(string); // null
Console.WriteLine($"string 기본값: {(defaultString == null ? "null" : defaultString)}");
// bool 형식 기본값
bool defaultBool = default(bool); // false
Console.WriteLine($"bool 기본값: {defaultBool}");
// 제네릭 메서드 테스트
int result1 = GetDefaultValue<int>(false); // false인 경우 기본값 반환
Console.WriteLine($"결과 (check=false): {result1}"); // 0
int result2 = GetDefaultValue<int>(true); // true인 경우 42 반환
Console.WriteLine($"결과 (check=true): {result2}"); // 42
}
}
}
728x90
'VisualStudio > C#' 카테고리의 다른 글
[C#] Struct를 byte로 변환, byte를 Struct로 변환 (0) | 2023.02.02 |
---|---|
[C#] Action.Invoke() vs Action() 차이 (0) | 2023.01.05 |
[C#] ? ?? 연산자 (0) | 2023.01.03 |
[C#] 구조체 메모리 절감 (0) | 2023.01.03 |
[C#] partial상용하여 class 동일이름 사용하기. (0) | 2022.12.05 |