필드(Fields)
필드는 클래스나 구조체 내에서 데이터를 저장하는 데 사용됩니다. 이는 해당 클래스나 구조체의 인스턴스마다 고유한 데이터를 저장하는 데 사용됩니다. 필드는 클래스나 구조체 내에서 직접 접근할 수 있으며, 일반적으로 클래스나 구조체의 상태를 나타내는 데 사용됩니다.
class MyClass
{
private int myField;
}
위의 예제에서 myField는 MyClass 클래스의 필드입니다.
속성(Properties)
속성은 클래스나 구조체의 멤버로, 해당 클래스나 구조체의 상태를 나타내거나 조작하기 위해 사용됩니다. 일반적으로 필드에 액세스 하기 위한 메서드의 대안으로 사용되며, 데이터의 유효성 검사나 추가 로직을 쉽게 구현할 수 있습니다.
class MyClass
{
private int myProperty;
public int MyProperty
{
get { return myProperty; }
set { myProperty = value; }
}
}
위의 예제에서 MyProperty는 MyClass 클래스의 속성입니다.
속성(Properties)은 데이터의 유효성 검사(validation)뿐만 아니라 다양한 기능을 수행할 수 있습니다. 이를테면, 값의 설정과 반환 전에 추가 로직을 실행할 수 있습니다.
class Person
{
private string name;
public string Name
{
get { return name; }
set
{
// 값이 null이거나 빈 문자열인 경우 기본값을 사용
name = string.IsNullOrEmpty(value) ? "Unknown" : value;
}
}
}
위의 예제에서 Name 속성은 값을 설정할 때 추가 로직을 실행하여 값이 null이거나 빈 문자열인 경우 "Unknown"으로 설정합니다. 이렇게 함으로써 속성을 통해 데이터의 일관성을 유지하고 유효성을 검사할 수 있습니다.
속성에 유효성 검사뿐만 아니라 다른 기능을 추가할 수도 있습니다.
예를 들어, 특정 조건에 따라 다른 값을 반환하도록 속성을 설정할 수도 있습니다.
class Circle
{
private double radius;
public double Radius
{
get { return radius; }
set
{
// 반지름이 음수인 경우 0으로 설정
radius = value < 0 ? 0 : value;
}
}
// 반지름을 사용하여 원의 넓이를 계산하는 읽기 전용 속성
public double Area => Math.PI * Math.Pow(Radius, 2);
}
위의 예제에서 Radius 속성은 음수 값이 설정되는 경우 0으로 설정되도록 유효성을 검사합니다. 또한, Area 속성은 읽기 전용이며, 반지름에 따라 원의 넓이를 계산하여 반환합니다.
이처럼 속성을 사용하여 데이터의 유효성을 검사하고, 다양한 기능을 추가하여 속성을 보다 유연하게 활용할 수 있습니다.
자동 구현 속성(Auto-implemented Properties)
자동 구현 속성은 C# 3.0에서 도입되었으며, 속성을 사용하는 일반적인 시나리오를 단순화하는 데 사용됩니다. 이를 통해 필드를 직접 선언하는 대신, 컴파일러가 백그라운드에서 필드를 자동으로 생성합니다.
class MyClass
{
public int MyAutoProperty { get; set; }
}
위의 예제에서 MyAutoProperty는 자동 구현 속성입니다. 컴파일러는 이를 사용하여 필요한 필드를 생성하고, 이 필드를 사용하여 속성을 백업합니다. 이러한 방식으로 코드를 간결하게 유지할 수 있습니다.
요약
- 필드(Fields): 클래스나 구조체 내에서 데이터를 저장하는 데 사용됩니다.
- 속성(Properties): 클래스나 구조체의 상태를 나타내거나 조작하는 데 사용됩니다. 데이터의 유효성 검사나 추가 로직을 구현할 수 있습니다.
- 자동 구현 속성(Auto-implemented Properties): 필드를 직접 선언하는 대신 컴파일러가 필드를 자동으로 생성하고 관리합니다. 코드를 간결하게 유지할 수 있습니다.
'C#' 카테고리의 다른 글
Service 생성 성능 측정 (0) | 2024.02.19 |
---|---|
VisualStudio 환경변수 설정 (0) | 2024.02.05 |
user 값 넣기 ( iSecure-Gateway(suprema)) 메모용 (0) | 2024.01.27 |
DBContext 를 사용하여 Migration 하는 방법 (0) | 2024.01.25 |
Log 원하는 경로에 저장하는 방법 (0) | 2024.01.25 |