프로그래밍/C# 54

[C#] 디자인패턴-싱글톤 패턴(Singleton Pattern)

싱글톤 패턴 싱글톤 패턴은 해당 객체의 메모리를 정적으로 할당하여 하나의 객체에만 접근하는 방법입니다. 따라서 프로그램이 동작하는 동안 최초로 생성된 객체 하나에만 접근하게 되므로 데이터를 접근하고 수정이 용이합니다. 생성자를 다른 곳에서 새롭게 선언을 하더라도 이미 정적으로 선언된 객체가 반환되기 때문에 중복되어 생성되는 것을 방지 할 수 있습니다. 초기 객체를 생성을 하게 되면 정적 메모리에 올라가기 때문에 이후 호출하는데 아주 빠르게 접근할 수 있는 장점이 있습니다. 인스턴스를 생성할 때 매개변수를 지정하는 것을 문제가 추천하지 않습니다. 인스턴스를 여러번 호출할 수 있는데, 매개변수가 달라지는 경우 문제가 될 수 있습니다. 매개변수를 사용하여 인스턴스에 액세스 하는 경우엔 팩토리 패턴이 더 적합합..

프로그래밍/C# 2022.07.03

[C#] ? 와 ?? 연산자

? 연산자 ? 연산자는 [ Null이 아니라면 참조하고, Null이라면 Null로 처리 ]하라는 뜻이다. class CClass { public List lstNumber = new List();; }; static void Main(string[] args) { CClass newClass = new CClass(); Console.WriteLine(newClass?.lstNumber); // List 정보가 출력됨. CClass nullClass = null; Console.WriteLine(nullClass?.lstNumber); // 아무것도 출력되지 않음. (null) } ?? 연산자 ?? 연산자는 [ Null이라면 오른쪽 값으로 처리 ]하는 연산자 이다. Object obj = new Dict..

프로그래밍/C# 2022.06.22

[C#] 의존성 주입 (Dependency Injection)

의존성이란의존성이라는 것은 A가 B에 의존할 경우 B가 변경될 때 A도 변경될 수 있는 가능성이 있다는 뜻입니다.의존성 주입 (Dependency Injection)의존성 주입이란 외부에서 객체를 생성하여 넘겨주는 것을 의미합니다.예를들어 A 클래스가 B 클래스를 의존할 때,B Object를 A가 직접 생성하지 않고 외부에서 생성하여 넘겨주면 의존성 주입했다고 합니다.왼쪽은 A에서 B를 생성하는 일반적인 의존 형태이고, 오른쪽은 외부에서 의존 객체를 생성하고 주입하는 형태입니다.의존성 주입은 소프트웨어 디자인 패턴 중 하나로, 클래스 간의 의존성을 외부에서 주입하는 방식을 의미합니다.이를 통해 코드의 재사용성과 유연성을 높이며, 유닛 테스트와 확장성에도 도움을 줍니다.As-Is 코드 (의존성 주입을 사용..

프로그래밍/C# 2022.06.06

[C#] 오버라이딩이란? (Override)

오버라이딩이란? (Override) A클래스의 메서드를 파생 클래스 B클래스에서 메서드를 가져와 내용을 변경 하려면 오버라이딩을 해야한다. A클래스의 메서드의 한정자는 virtual이고, B클래스의 메서드 한정자는 override 이어야 한다. B클래스의 메서드에서 base.{메서드}를 기본으로 호출해야한다. A클래스의 메서드가 private이면 오버라이딩 불가하다. class ArmorSuite { public virtual void Initialize() { Console.WriteLine("Armored"); } } class IronMan : ArmorSuite { public override void Initialize() { base.Initialize(); Console.WriteLine($..

프로그래밍/C# 2022.06.06

[C#] 키워드 정리

필드 클래스 내부의 변수를 말한다. 멤버 클래스 내부의 변수,메서드 등.. 모든 것을 통틀어 말한다. Static static은 메서드나 필드가 클래스의 인스턴스가 아닌 클래스 자체에 소속되도록 지정하는 한정자이다. is 키워드 객체가 해당 형식에 해당하는지 검사, bool값을 반환한다. as 키워드 형식 변환 연산자 형식 변환 실패 시 null을 반환한다.

프로그래밍/C# 2022.06.06

[C#] 생성자 (Constructor)

생성자 (Constructor) class 명과 동일한 메서드 생성자의 임무는 단 한가지, 해당 형식(클래스)의 객체를 생성하는 것이다. 생성자를 구현하지 않으면, 컴파일러에서 만들기 때문에(이런 생성자를 기본 생성자(Default Constructor)라고 한다.) 빌드에 문제가 없다. public class Person { private string last; private string first; // 생성자 public Person(string lastName, string firstName) { last = lastName; first = firstName; } // Remaining implementation of Person class. }

프로그래밍/C# 2022.06.06

[C#] 파일 목록 가져오기

GetFiles 현재 디렉터리에 있는 파일 목록을 가져오려면 GetFiles 메서드를 사용합니다. var dir = new DirectoryInfo(@"C:Windows"); FileInfo[] files = dir.GetFiles(); foreach (var item in files) { Console.WriteLine($"파일명 : {item.Name}"); } EnumerateFiles .NET 프레임워크 4.0 이후 버전에서 EnumerateFiles 메서드를 사용해 파일 목록을 가져올 수 있습니다. var dir = new DirectoryInfo(@"C:Windows"); // .txt 확장자 파일을 구합니다. // 두번째 인수 `SearchOption.AllDirectories`를 설정하면 ..

프로그래밍/C# 2022.05.14

[C#] 폴더와 파일 구분하기

지정된 폴더 안에서 파일과 폴더 구분해봅시다. GetFileSystemInfos DirecotryInfo 클래스에 있는 GetFileSystemInfos 메서드를 사용합니다. var dir = new DirectoryInfo(@"C:\Users\A\source\test"); // 폴더 경로 FileSystemInfo[] fileSystemInfos = dir.GetFileSystemInfos(); foreach (var item in fileSystemInfos) { // 디렉터리 여부를 판별합니다. if ((item.Attributes & FileAttributes.Directory) == FileAttributes.Directory) Console.WriteLine($"this is dir : {it..

프로그래밍/C# 2022.05.14

[C#] StringBuilder로 문자열 연결하기

문자열은 변하지 않는 객체입니다. 예를 들어, 다음 코드는 abc 뒤에 xyz을 붙여 연결되는 것이 아니라, 새로운 6자 크기의 인스턴스가 생성되고, 인스턴스에 abc, xyz가 복사됩니다. string str1 = "abc" str1 += "xyz"; 만약 반복해서 문자열을 연결하는 코드를 작성하게 되면 비효율적인 리소스 낭비가 이뤄질 수 있습니다. StringBuilder 클래스를 사용하면 문자열을 효율적으로 연결할 수 있습니다. var sb = new StringBuilder(); //객체 생성 sb.Append("안녕하세요, "); //문자열 추가 sb.Append("Victory Ha"); sb.Append("입니다."); var result = sb.ToString(); //문자열 변환 Str..

프로그래밍/C# 2022.05.07