반응형
아래 글은 C# 필드 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
- C# 교과서(길벗 출판사) - 34단원 대리자 460 ~ 469페이지
- 유튜브채널 VisualAcademy [C# 교과서 마스터하기 34. 필드(Field)]
https://www.youtube.com/watch?v=VPCVleg-RiM
✳ 필드란
- 클래스 안에서 선언된 변수(Variable)를 필드
- 필드는 일반적으로 클래스의 부품 역할을 하며 대부분 private 한정자가 붙음
- 참고로 C / C++ 등의 언어에서는 해당 범위에서의 전역 변수(Global Variable)와 같은 의미
- 필드는 클래스가 가지는 속성이며 변수 또는 상수가 위치
* 상수
-> const 키워드: C#
-> final 키워드: Java
* 읽기 전용(Read-Only) 필드
- public readonly decimal Price;
-> 대문자로 시작 가능 - 클래스 내에 선언된 상수와 비슷하나
-> 선언과 동시에 초기화(같음)
-> - 또는 -
-> 생성자를 통해서 초기화(다름) - public 액세스 한정자 지정 가능
-> 필드는 private 액세스 한정자 권장
* 상수와 읽기전용 필드
- 상수
-> 컴파일 타임 상수
=> 상수는 컴파일 시 데이터가 저장된다.
-> 선언과 동시에 초기화
-> 숫자, 참 또는 거짓, 문자열
-> 항상 static 으로 호출됨 - 읽기전용 필드
-> 런타임 상수
=> 읽기전용 필드는 런타임(실행) 시 데이터가 저장된다.
-> 선언과 동시 초기화 또는 생성자에 의한 초기화
-> 모든 데이터 형식
-> static 선언 가능, 일반적으로 인스턴스
* 캡슐화 / Information Hiding
- 개체의 데이터는 해당 개체에서만 접근 가능하도록 설정
- 필드는 private
-> 외부에 공개가 필요한 것은 뒤에서 배울 속성(property)으로 공개하도록 설정
* 필드 한줄 정의
- 클래스의 부품 역할을 하는 클래스의 내부 상태 값을 저장해놓는 그릇
예제코드
// 필드.cs
using System;
namespace 필드
{
public class Person
{
//[!] 필드(멤버변수, 전역변수(Global Variable))
#region 필드 영역(Private Member Variables)
//[1] 변수 형식의 필드
public static string name = "박용준";
//[2] 상수 형식의 필드
public const int m_age = 21;
//[3] 읽기전용 형식의 필드
public static readonly object _NickName = "RedPlus";
//[4] 배열 형식의 필드
public static string[] _websites = { "닷넷코리아", "비주얼아카데미" };
#endregion
//[!] 필드 내용 출력 메서드
public static void ShowProfile()
{
// 로컬변수(Local Variable)
string strWrite = String.Format(
"이름: {0}\n나이: {1}\n별명: {2}\n", name, m_age, _NickName);
strWrite += "홈페이지: ";
foreach (string s in _websites)
{
strWrite += s + '\t';
}
strWrite += '\n';
Console.WriteLine(strWrite);
}
}
public class 필드
{
//[!] 메서드: Main 메서드
public static void Main(string[] args)
{
// 지역 변수(LocalVariable): 특정 메서드내에서 선언된 변수
string name = "박용준";
Console.WriteLine(name);
//[!] 필드를 public으로 선언했지만, 앞으로는 private을 붙인다.
Person.name = "홍길동";
// Person.m_age = 22; // 이 코드는 실행 안됨
// Person._NickName = "WhitePlus"; // 이 코드는 실행 안됨
Person._websites[0] = "dotnetkorea";
Person.ShowProfile(); // *
}
}
}
* 출처( https://www.dotnetkorea.com/ )
반응형
'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글
C# 구조체(Structure Types) (0) | 2021.05.23 |
---|---|
C# 생성자(Constructor) (0) | 2021.05.22 |
C# 이벤트(Event) (0) | 2021.05.21 |
C# 대리자(Delegate) (0) | 2021.05.20 |
C# 속성(Property) (0) | 2021.05.20 |