유니티 프로그래밍/C# 프로그래밍 썸네일형 리스트형 비주얼 스튜디오에서 활성화된 문서 추적하기 메뉴 - 도구 - 옵션 아래 부분 체크 더보기 C# 접근제한자 internal 간단하게 이해하기 c# 에서의 접근 제한자의 종류는 크게 보면 아래와 같다. 1. public 2. protected 3. private 4. internal 5. protected internal 6. private protected 여기서 public, protected, private 는 다들 쉽게 이해하지만 막상 internal 용어가 나오면 애매하게 햇갈려 하는 경우가 있는데 한마디로 정의하면 "서로 다른 어셈블리"에 있는 클래스들을 허용하는지 안하는지에 따라 다르다. (private는 워낙 폐쇄적인 접근제한자 이므로 그냥 무조근 안된다고 생각하면 편함) public , protected 접근제한자는 다른 어셈블리에 있는 클래스에서도 접근이 가능하지만 internal 제한자가 붙으면 같은 어셈블리에 있는 publ.. 더보기 C# this 키워드 this 키워드는 불려진 메서드의 클래스가 갖고 있는 변수나 메서드를 뜻한다. 햇갈리기 쉬우니 아래의 예제로 잘 이해해둘 것. class Employee { private string Name; private string Position; public void SetName(string Name) { this.Name = Name; // 여기서 this.Name은 위 3번째 행의 Name 변수를 뜻함.(그 뒤의 Name은 이 메서드인 SetName의 파라메터이다. } public string GetName() { return Name; } public void SetPosition(string Position) { this.Position = Position; } public string GetPosit.. 더보기 C# 생성자와 종료자 생성자 함수는 주로 초기화 하거나, 정의할 때 많이 사용된다. 반대로 종료자는 종료를 시켜주는 역할을 하는데, 아쉽게도 C++ 처럼 강력한 기능이 아니며, 가비지컬렉터에 의해서 동작하는 알고리즘이 있어서, 내가 원하는 타이밍에 호출이 되지 않을때도 있어서 그렇게 많이 실무에 적용되진 않는다고 한다. 생성자 함수와 종료자 함수는 아래의 예제를 보면서 하면 쉽다. class Cat { public string Name; public string Color; public Cat() // 기본 생성자. 만약 이 생성자가 없다면, 기본값으로 자동으로 생성자가 숨어있다고 생각하면 이해하기 쉽다. { Name = ""; Color = ""; } public Cat(string _Name, string _Color) .. 더보기 C#에서의 추상화, 구체화 간단히 설명 객체지향언어의 필수 특성이라고 할 수 있는 추상화와 구체화가 있는데 막상 이 용어들을 들으면 어려울 수 있어서 간단히 정리를 해둔다. 1. 추상화 추상화는 클래스의 이름을 짓고 역할 정도만 정해두는 단계를 뜻한다. 다만 이 단계에서는 구체적인 것들을 정하지 않아야 나중에 더욱 좋은 객체지향적이며 구조적인 프로그래밍을 할 수 있다. 2. 구체화 추상화 된 클래스들을 구체적으로 프로그래밍 하는 것을 뜻한다. 예를 들면 추상화를 통해 클래스를 만들었다면, 구체화를 통해 그 클래스를 인스턴스화 시키고, 실제적으로 사용하는 프로그래밍을 하는 단계이다. 클래스로만 있을때는 설계도면만 존재한다고 생각한다면 new 키워드를 통해 인스턴스화 된다면, 이는 실제적으로 지어진 건물이라고 생각하면 좋다. 같은 설계도면을 통해.. 더보기 C# 에서의 Switch 문 사용 예제 class SwitchExp { static void Main(string[] args) { Console.WriteLine("점수를 입력하세요"); int input = Convert.ToInt32(Console.ReadLine()); int score = (int)(Math.Truncate(input / 10.0) * 10); Console.WriteLine("재수강인가요? (y/n)"); string line = Console.ReadLine(); bool repeated = line == "y" ? true : false; string grade = ""; switch (score) { case 90: { if (repeated) { grade = "B+"; } else { grade = "A";.. 더보기 C# 오버로딩 잘 생각이 안날때 보는 예제 오버로딩 갑자기 또 막연해질때 봐지면 좋은 예제 class Overloading_UsingParams { static int Plus(int a, int b) { Console.WriteLine("Calling int Plus(int, int)..."); return a + b; } static int Plus(int a, int b, int c) { Console.WriteLine("Calling int Plus(int, int, int)..."); return a + b + c; } static double Plus(double a, double b) { Console.WriteLine("Calling Double Plus(double, double)..."); return a + b; } stati.. 더보기 C# 파라메터 이름 지정 + 선택하지 않는 파라메터 지정 c#의 기능중 파라메터의 이름을 지정해 명확성을 더 높일 수 있는 기능과 메서드를 호출 할 때 파라메터를 사용하지 않아도 자동으로 초기화 해서 파라메터를 지정해주는 기능이 있다 아래 예제를 보면서 생각해보면 좋다 class NamedParameter_OptionalParameter { static void PrintProfile(string name, string phone) { Console.WriteLine($"Name:{name}, Phone:{phone}"); } static void PrintProfile2(string name, string phone = "") // 파라메터가 없을 경우 "" 로 초기화 해서 값을 넣어준다. { Console.WriteLine($"Name:{name}, Pho.. 더보기 이전 1 2 3 4 다음