반응형

New

more

C# Generic: 서로 다른 타입 인수를 가진 제네릭 타입을 한 컬렉션에 담기

얼마 전 공부 중인 지인을 돕다가 예전의 내 경우와 똑같은 문제로 고민하는 것을 보았다. 서로 다른 타입 인수를 가진 제네릭 타입을 하나의 컬렉션에 담고 싶다는 것이다. 문제 어떤 타입이든 상관 없이 하나로 묶고 싶다고 생각한다면 object를 담는 컬렉션를 사용하는 방법을 떠올리기 쉽다. object로 할 수 있는 것은 Equals()나 ToString() 호출 정도이니 원하는 타입으로 캐스팅하여 사용하게 될 것이다. 캐스팅을 이용한 방법에는 크게 두 가지가 있다: 필요한 곳에서 필요한 대로 적당히 캐스팅해서 사용 언제 어디서 예외가 발생할 지 모르며 너무 즉흥적이라 작성한 본인도 의도를 잊어버릴 수 있다. Type 타입의 객체를 저장해 뒀다가 캐스팅하거나 비교해서 사용 장황하고 짜증나는 방식이다. 제..

C# 2023.01.24 0

VSCode ssh 원격 세션 연결 시 Broken pipe 오류

문제: VSCode ssh 원격 세션 연결 시 Broken pipe 오류와 함께 아무 오류 메시지도 출력되지 않음 해결: 나의 경우 Linux 로컬에서 Windows ssh 서버에 연결할 때 이런 증상이 일어났다. 이는 VSCode가 ssh 서버가 Windows라는 것을 자동으로 인식하지 못해서 발생하는 현상이기 때문에, 서버 운영체제를 수동으로 지정해 주면 해결된다. //settings.json: "remote.SSH.remotePlatform": { "(Host)": "windows" }

VSCode 2023.01.20 0

Linux Omnisharp에서 C# WPF 개발 (빌드)

문제: WPF 프로젝트에서 Omnisharp가 "Windows is required to build Windows desktop applications." 오류와 함께 프로젝트 분석을 스킵함 해결: https://github.com/dotnet/sdk/issues/3592#issuecomment-571346342 NETSDK1100 blocks building on Linux · Issue #3592 · dotnet/sdk I have a test project which multi-targets between net472;netcoreapp2.1;netcoreapp3.0. Only when targeting net472 or netcoreapp3.0 does it reference or use any ..

Linux 2022.06.01 0

scanf 대신 fread 사용 시 참고

scanf는 null terminate를 해 주고 그만큼의 추가 공간이 필요 fread는 null terminate를 해 주지 않음 -> 배열이나 할당된 공간의 초기화 또는 직접 null terminate 필요 scanf("%[^\n]", str)으로 \n 문자를 입력받지 않을 수 있음 fread는 \n까지 읽어옴 // 100 글자 입력 char str[102] = {}; // null terminate를 위해 +1 int len = fread(str, sizeof(*str), sizeof(str) - 2, stdin); str[--len] = 0; //\n 무시 for (int i = 0; i < len; i++) ...

C, C++ 2022.03.26 0
반응형