본문 바로가기
프로그래밍언어 & 프레임워크/C#

C# 필드(Field)

by 공부하는개미 2021. 5. 21.
반응형

 

아래 글은 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