상세 컨텐츠

본문 제목

step2 c# 기초 - 연산자 와 함수

개발생활/Unity Engine

by 한국인맛집 2022. 2. 12. 15:06

본문

반응형

연산자(operator)

연산자는 프로그래밍에서 값을 대입하거나 값을 비교 하거나 연산을 해야할때 사용된다.

 

c#에서 사용되는 연산자의 종류는 다음과 같다.

 

기본 키워드와 연산자의 종류이다.

 

연산자 카테고리
x.y, f(x), a[i], x?.y, x?[y], x++, x--, x!, new, typeof, checked, unchecked, default, nameof, delegate, sizeof, stackalloc, x->y Primary
+x, -x, !x, ~x, ++x, --x, ^x, (T)x, await, &x, *x, true and false Unary
x..y Range
switch, with switch and with expressions
x * y, x / y, x % y Multiplicative
x + y, x – y Additive
x << y, x >> y Shift
x < y, x > y, x <= y, x >= y, is, as Relational and type-testing
x == y, x != y Equality
x & y Boolean logical AND or bitwise logical AND
x ^ y Boolean logical XOR or bitwise logical XOR
x | y Boolean logical OR or bitwise logical OR
x && y Conditional AND
x || y Conditional OR
x ?? y Null-coalescing operator
c ? t : f Conditional operator
x = y, x += y, x -= y, x *= y, x /= y, x %= y, x &= y, x |= y, x ^= y, x <<= y, x >>= y, x ??= y, => Assignment and lambda declaration
%

Modulus

 

연산 우선순위

연산자 우선순위
a + b a, b, +
a + b * c a, b, c, *, +
a / b + c * d a, b, /, c, d, *, +
a / (b + c) * d a, b, c, +, /, d, *

 

 

증감 연산자

연산자 결과
a++ 연산후-> 증가
++a 선증가-> 연산
a-- 연산-> 후감소
--a 선감소-> 연사

 

int b = 10;
Console.WriteLine(a);   // output: 10
Console.WriteLine(++a); // output: 11
Console.WriteLine(a);   // output: 11

 

int a = 1;
Console.WriteLine(a);   // output: 1
Console.WriteLine(a--); // output: 1
Console.WriteLine(a);   // output: 0

 

?: operator 3항 연산자

 

3항 연사자 이다.

처음 3항 연산자를 보게되면 이상하게 이해가 안될수도 있다.

 

사용은 다음과 같다.

int a = 10;

int result= a == 10 ? a : result = 30;

 

? 앞 연산결고가 true값이면 좌측 값을 출력하고, false값이라면 우측값을 리턴해준다.

 

위에 문장을 보고 a를 10으로 초기화 했다.

 

result 변수에 a 가 10 이라면  a 그 자체를 result에 대입하고, 만약 10이 아니라면 result에 30을 넣는다. 

 

 

막상보게 되면 매우 어렵고 복잡해보이지만

 

코드식이 간편해지는 장점과 if문을 사용하지 않아도 되는 장점을 가지고 있다.

 

다만 식이 길어져 복잡하게 느껴질수 있지만 필드에서 싱글톤 디자인 패턴을 활용할때 자주 사용된다.

 

 

* SingleTone Pattern [싱글톤 패턴] : 인스턴스를 단일화 하는 디자인 패턴 방법

싱글톤 패턴은 클래스 인스턴스를 단일화로 만들어 재사용하는 기법이다. 해당 싱글톤 패턴은 객체를 하나 할당해 여러 클래스에서 공용으로 사용하는것을 말한다.

 

단점으론 싱글톤 객체가 어디서든 전역으로 사용하기때문에 불필요한 접근, 싱글톤 객체가 많으면 객체지향을 지향하지 않는 프로그래밍 기법이 되기때문에 반드시 필요로 할때만 사용해야한다.

 

Unity 에서 실제 아래와 같이 사용한다.

class Manager : MonoBehaviour{

	public static Manager instance = null;
    
	public static Manager Instance {
		get{
			return instance == null? instance = new Manager() : instance;
		}
	}

	private void Awake(){
		if (instance != null) {
			Destroy(this.gameObject);
			return;
		} 

		instance = this;     
		DontDestroyOnLoad(this.gameObject);     
	}
}

 

 

 

 

 

함수(function)

 

함수는 자주사용되는 코드를 함수로 구현해놓는것을 말합니다.

게임프로그래밍에서 플레이어의 이동, 공격, 스킬 등과 같이 자주사용되는 코드를 함수로 만들어 필요시 함수만 불러 사용할수 있도록 하며 가장 기초적인 기술입니다.

 

함수란 무엇인가?

 

 

 

자판기에 1번 물건을 사고싶을때 어떻게 해야할것인가?

우리는 돈을 자판기에 넣어 1번버튼을 누르면 자판기에서 1번 물건을 줄것이다.

돈은 우리가 사용하는 인수 (Parameter)이다.  

그리고 자판기는 함수이다. 자판기에서 사용자에게 버튼 입력이나 아니면 자동으로 주는 건 자판기에 따라 다르게 설정할수있다.

 

마지막으로 결과물은 함수의 출력형식 과 같다.

 

쉽게 이해하기위해 "우리는 함수는 자판기와 같다 "로 이해하는게 좋겠다.

 

하지만 꼭 저 위에 사진이 맞는것은 아니다. (이해를 위한 그림이다.)

 

 

객체지향프로그램에서 클래스 내부에 있는 함수를 지역 함수, 로컬 함수라고 한다.

 

아직 클래스에 대한 기본 개념이 없어 클래스 에대한 내용은 추후 다룰 예정이다.

 

Main 함수

메인함수는 c# 에서 반드시 존재 해야합니다!

 

Main 함수가 둘이상 있을경우 Main 컴파일러 옵션을 사용하여 프로그램을 컴파일러 진입점으로 사용할 지정 Main으로 해야합니다.

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/compiler-options/advanced#mainentrypoint-or-startupobject

 

C# 컴파일러 옵션 - 고급 시나리오

고급 C# 컴파일러 옵션. 이러한 옵션은 고급 시나리오에서 사용됩니다.

docs.microsoft.com

 

 

하지만 복잡하므로.

프로그램당 1개만 사용하는것을 원칙으로 합니다.

 

사용방법은 다음과 같습니다.

 

public class MyClass{

   public static void Main(){
      // TODO Your Code
   }
}

 

 

로컬 함수

 

[타입] [함수명] (파라미터1 ...) {

}
int MyFuntion(){
  int number = 10;
  
  return number;
}

void FooFunction(int a, int b){
  Console.WirteLine(a+"  "+b);
}

float FloatFunction(){
   return 50f;
}

 

 

 

void 타입은 리턴타입을 지정해주지 않아도 됩니다.

 

단, int타입이라면 정수 형 타입을 리턴해줘야하고,

float 실수, string이면 문자열, 클래스의 객체 타입이라면 해당 클래스 타입을 리턴해줘야합니다.

 

 

public class MyClass{


   public static void Main(){
     int a = 10, b = 20;
     Console.WriteLine(Sum(a,b));
     
     int result = Sum(a,b);
     
     Console.WriteLine(result);
   }
      
   public int Sum(int a, int b){
     return a+b;
   }
}

 

 

콘솔에서 키보드 입력 메서드

Console.ReadLine();

 

입력받은 값이 문자열로 저장된다!

 

다음과 같이 사용하면 에러가 나거나 올바르지 않은 값을 출력할것이다.

public class MyClass{

   public static void Main(){
     int input1, input2;
     Console.Claer();
     
     Console.Write("Your First Number == >");
     input1=Console.ReadLine();
     
     Console.Write("Your second Number == >");
     input2=Console.ReadLine();
     
     int number = input1 + input2;
     
     }
   
}

 

Convert 메서드

형식 메서드
int ToInt32(String)
float ToSingle(String)
short ToInt16(String)
double ToDouble(String)

 

 

 Convert 메서드를 호출하여 다음과같이 사용해야한다.

public class MyClass{

   public static void Main(){
     int input1, input2;
     
     Console.Write("Your First Number == >");
     input1=Convert.ToInt32(Console.ReadLine());
     
     Console.Write("Your second Number == >");
     input2=Convert.ToInt32(Console.ReadLine());
     Console.WirteLine(Sum(input1, input2);
   }
   
   
   public int Sum(int a, int b){
     return a+b;
   }
}

 

 

함수의 파라미터를 초기화 해줄수도 있다.

 

public void MyFunc(int a = 10){
   Console.Write(a);
}

 

위에와 같이 선언한다면. 아래와 같이 사용할수 있다.

 

public class MyClass{
   int a = 10;
   
   MyFunc(11000);
   
   myFunc();
}

 

위의 출력값은 11000 출력되고 아래는 10이 출력된다.

 

필요에따라 파라미터 기본값을 컨트롤 할수 있다.

 

 

 

 

Reference

https://docs.microsoft.com/

 

개발자 도구, 기술 설명서 및 코딩 예제

개발자와 기술 전문가용 Microsoft 설명서 및 학습을 위한 홈입니다.

docs.microsoft.com

 

반응형

관련글 더보기