본문 바로가기
발전/C#

[C#] 기초 및 자바와 다른 점 (3) | 연산자 오버로딩(오버로드), ref, out 키워드

by babepro 2022. 6. 16.

연산자 오버로딩

​C#에서는 operator 키워드로 연산자 오버로딩을 지원한다. 

규칙

1. 무조건 public

2. 무조건 static

public static ComplexNumber operator+(ComplexNumber a, ComplexNumber b) { ... }

위처럼 선언하면 객체 a, b에 대한 + 연산을 정의할 수 있다.

 

switch문

자바에서는 break문이 필수가 아니다. break문을 쓰지 않으면 다음 case가 실행된다. 

c#은 break문이 필수이다. 

 

값 형식을 참조로 전달 ref, out

ref -> 기존 변수 수정

매개변수로 사용되는 변수의 값을 영구적으로 변경 할 때 사용한다. 

값 형식 매개변수에 ref 키워드를 지정하면

매개변수가 바깥 코드 변수에서 사용하던 실제 메모리를 참조한다. 

따라서 메서드 내에서 변경된 매개변수 값이 메서드 밖 원래 변수에도 적용된다. 

ref 매개변수는 사용하기 전에 초기화가 필요하다. 

 

out -> 생성된 값 반환

ref와 마찬가지로 수정 내용이 메서드 외부에도 적용된다. 

ref와 차이점은

1. out 매개변수는 초기화 할 필요 없다. 모든 초기값이 메서드 내에서 무시된다. 

2. out 매개변수는 메서드를 진행하는 동안 할당해야 한다. 

 

즉, 이전에 선언되고 값을 할당한 변수를 out 키워드와 매개변수로 사용하면

메서드 내에서 값을 새로 할당해야 하며 이전 값은 무시된다. 

메서드 안에서 할당된 값이 메서드 밖에서도 적용된다. 

 

 

 

// 나중에 공부하고 추가 예정..

/*

접근제어자

상속

virtual, override 키워드로 명시해줘야함

상속 남용 방지 가능

super ~ base

// 예제 코드 가져오자

그 외 추가된 키워드

struct, Unsafe,

ref -> reference type을 함수 인자로 받음? 더 알아보기

 

unsafe -> 포인터 사용 가능 (위험)

*/