C#31 C# 정리 ) ref 예약어 깊은 복사 : 메모리 자체가 복사되어 새로운 변수에 대입되는 것. (예 : 구조체 간의 대입, 값 형식의 변수) 얕은 복사 : 참조 형식의 변수가 대입되는 방식. (예 : 클래스 간의 대입) 깊은 복사가 되는 상황을 특별히 메서드의 인자 전달과 관련해 값에 의한 호출 이라고 한다. 그 반대는 참조에 의한 호출이라 한다. ref 예약어는 두곳에서 사용한다. 1 : 메서드의 매개변수를 선언할 때 2 : 해당 메서드를 호출하는 측에서 using System; namespace Project2 { class Program { struct Vector { public int x; public int y; } public static void Main(string[] args) { Vector v1; v1.x = .. 2021. 12. 11. C# 정리 ) 구조체 숫자형과 char, bool은 타입이 값 형식에 속한다. string, object와 class로 정의되는 모든 타입은 참조 형식에 속한다. 값 형식헤도 class 처럼 사용자 정의 형식을 두는 방법이 있는데, 그것이 바로 구조체이다. 구조체는 클래스를 정의하는 문법과 유사하게 정의된다. 단지 class 예약어 대신 struct 예약어가 들어갈 뿐이다. 또한 다음 4개의 차이점을 가진다. 1 : 인스턴스 생성을 new 로 해도 되고, 안해도 된다. 2 : 기본 생성자는 명시적으로 정의할 수 없다. 3 : 매개변수를 갖는 생성자를 정의해도 기본 생성자가 C# 컴파일러에 의해 자동으로 포함된다.(클래스는 포함되지 않는다.) 4 : 매개변수를 받는 생성자의 경우, 반드시 해당 코드 내에서 구조체의 모든 필드에.. 2021. 12. 10. C# 정리 ) 인터페이스 강한 결합, 느슨한 결합 느슨한 결합은 인터페이스의 중요한 특징 중 하나이다. 먼저 강력한 결합은 클래스 가의 호출이 정의된 것을 말한다. class Computer { public void TurnOn() { Console.WriteLine("Computer : TurnOn"); } } class Switch { public void PowerOn(Computer machine) { machine.TurnOn(); } } 결합이 강력하다면 유연성이 떨어진다는 약점이 있다. Switch에 Computer가 아닌 Monitor를 연결한다고 생각해 보자. class Monitor { public void TurnOn() { Console.WriteLine("Monitor : TurnOn"); } } class Switch { pub.. 2021. 12. 10. C# 정리 ) 인터페이스 콜백 델리게이트 뿐만 아니라 상속으로 콜백을 구현할 수 있다. using System; namespace Project2 { interface ISource { string GetString(); } class Source : ISource { public string GetString() { return "인터페이스 콜백"; } public void Test() { Target target = new Target(); target.Do(this); Source2 sc2 = new Source2(); target.Do(sc2); } } class Source2 : ISource { public string GetString() { return "Source2"; } public void Do(ISource o.. 2021. 12. 10. 이전 1 2 3 4 5 ··· 8 다음