본문 바로가기
프로그래밍/C#

[C#] 접근 제한자, this

by 뽀도 2016. 12. 26.

접근제한자

 

접근제한자는 5가지 종류가 있다.

 

접근 제한자

설명 

private

클래스 내부에서만 접근이 가능합니다.

public 

모든 곳에서 해당 멤버로 접근이 가능합니다.

internal

같은 어셈블리에서만 public으로 접근이 가능합니다. 

protected

클래스 외부에서 접근할 수 없으나 파생 클래스에서는 접근이 가능합니다.

protected internal 

같은 어셈블리에서만 protected으로 접근이 가능합니다. 

 

 

 

 

 

 

 

 

This

 

this는 자기 자신을 가리키는 키워드이다.

this를 사용하면 클래스 내에 정의한 멤버변수를 가르킨다.

this 생성자를 사용하면 클래스내의 다른 생성자를 가르킨다.

 

----------------------------------------------
 this/MainApp.cs
----------------------------------------------

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

namespace study_csharp
{
    class Employee
    {
        private string Name;
        private string Posotion;

        public void SetName(string name)
        {
            this.Name = name;
        }
        public string GetName()
        {
            return Name;
        }

        public void SetPosition(string Position)
        {
            this.Posotion = Position;
        }
        public string GetPosition()
        {
            return Posotion;
        }
    }
    class c07This
    {
        static void Main(string[] args)
        {
            Employee pooh = new Employee();
            pooh.SetName("pohh");
            pooh.SetPosition("Waiter");
            Console.WriteLine("{0} {1}", pooh.GetName(),pooh.GetPosition());

            Employee tigger = new Employee();
            tigger.SetName("tigger");
            tigger.SetPosition("Cleaner");
            Console.WriteLine("{0} {1}", tigger.GetName(), tigger.GetPosition());

        }
    }
}


----------------------------------------------
 thisConstructor/MainApp.cs
----------------------------------------------

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

namespace study_csharp
{
    class MyClass
    {
        int a, b, c;

        public MyClass()
        {
            this.a = 5425;
            Console.WriteLine("MyClass()");

        }

        public MyClass(int b) : this()
        {
            this.b = b;
            Console.WriteLine("Myclass({0})",b);
        }
        public MyClass(int b, int c) :this(b)
        {
            this.c = c;
            Console.WriteLine("MyClass({0}. {1})", b, c);
        }
        public void PrintFields()
        {
            Console.WriteLine("a:{0}, b:{1}, c{2}", a, b, c);
        }
    }

    class MainApp
    {
        static void Main(string[] args)
        {
            MyClass a = new MyClass();
            a.PrintFields();
            Console.WriteLine();

            MyClass b = new MyClass(1);
            b.PrintFields();
            Console.WriteLine();

            MyClass c = new MyClass(10, 20);
            c.PrintFields();
        }
    }
}

 

 

 

반응형

'프로그래밍 > C#' 카테고리의 다른 글

C# 이벤트  (0) 2017.06.14
C# 네임스페이스  (0) 2017.06.14
c# Exception 예외처리  (0) 2017.06.14
[c#] 한국 원화 \ 표시하기.  (1) 2017.01.09
데이터 형식 범위  (0) 2015.08.19

댓글