C#/C#200제

[C#] 10일차 - 66. 클래스의 멤버, 필드와 상수

반나무 2021. 1. 30. 14:39

필드 

클래스에서 선언되는 모든 형식의 변수를 멤버변수 혹은 필드라고 합니다.

필드는 보통 소문자로 시작합니다

필드는 보통의 경우 캡슐화를 위해 private또는 protected로 사용합니다.

 

인스턴스(객체)필드와 정적 필드의 두종류가있습니다.

 

인스턴스(객체)필드 :

객체에 속한 필드로 객체의 이름과 함께 사용합니다. public string name; 과 같이 [접근제한자] [자료형] [필드명] 으로 생성하고, "인스턴스. 필드명" 으로 사용됩니다.

 

정적 필드(클래스)필드 :

클래스 이름과 함께 쓰는 필드를 클래스 필드라고 합니다.

만들때는 static 키워드가 추가되며 사용할 때는 "[클래스 이름].[필드명]"으로 사용합니다.

 


상수

상수는 컴파일 시간에 알려진 변경할 수 없는 값입니다.

C#의 기본 제공 형식만 const로 선언할 수있으며 구조체와 클래스 및 사용자 정의 형식은 const선언이 불가합니다.

static 키워드를 사용하지는 않습니다.

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A066_FieldsAndConstants
{
    class Product
    {
        public string name;
        public int price;
    }
    class MyMath
    {
        public static double PI = 3.14;
    }
    // MyCalendar class에 대한 정의 ( 상수는 만들고 반드시 초기화를 해줘야함 )
    class MyCalendar
    {
        public const int months = 12;
        public const int weeks = 52;
        public const int days = 365;

        public const double daysPerWeek = (double)days / (double)weeks;
        public const double daysPerMonth = (double)days / (double)months;
    }
    class Program
    {
        static void Main(string[] args)
        {
            Product p = new Product();
            p.name = "시계";
            p.price = 100000;

            Console.WriteLine("{0} : {1:C}", p.name, p.price);
            Console.WriteLine("원주율: {0}", MyMath.PI); // PI는 static이므로 객체를 생성하지 않고 바로사용함
            Console.WriteLine("한 달은 평균{0:F3}일", MyCalendar.daysPerMonth); // 상수는 static 키워드가 없지만 객체를 생성하지 않고 클래스 이름으로 바로 사용가능
            
        }
    }
}

반응형