[기존 출력 방식] int cnt1 = 10; int cnt2 = 20; int cnt3 = 30; string.format("string {0} {1} {2}",cnt1, cnt2, cnt3); [업데이트된 보간을 이용한 출력 방식] int cnt1 = 10; int cnt2 = 20; int cnt3 = 30; string.format($"string {cnt1} {cnt2} {cnt3}"); 다음과 같이 간략화 시킬 수 있다. 조금 더 응용하면 연산 방식도 가능하다. int cnt1 = 10; int cnt2 = 20; int cnt3 = 30; string.format($"string {cnt1+cnt2} {cnt2*cnt3} {cnt3/cnt1}"); #문자열 출력 #c# #wpf #unity ..
개발을 진행하다보면, T Generic 타입을 쓰는경우가 많은데, list 인지를 체크해서 따로 처리하는경우가 많다. 이럴경우 List 체크를 할 수 있다. public static bool IsGenericList(this object o) { var oType = o.GetType(); return (oType.IsGenericType && (oType.GetGenericTypeDefinition() == typeof(List))); } 다음과 같이 처리하면된다. #c# #unity #winform #wpf #generic #T #list
[c#/wpf/unity]byte를 object(class 객체)로 object를 byte로 변환하기 udp 통신이나, tcp통신을 포함한 통신 및 패킷을 주고받다보면 객체를 byte화하여 정보를 주고 받는 일이 빈번하다. 그럴경우 손쉽게 객체를 byte화하여 serialize/deserialize 처리를 할 수있다. public static object ByteToObject(byte[] buffer) { try { using (MemoryStream stream = new MemoryStream(buffer)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); stream.Position = 0; return binaryFormatter.Dese..
[1분해결] c#에서 ffmpeg 동적으로 사용하기 [설명] runCommand - process를 활용하여 ffmpeg 스크립트 실행 BackgroundWorker - 비동기화 구현 private void Initialize() { bgworker = new BackgroundWorker(); bgworker.DoWork += Bgworker_DoWork; bgworker.RunWorkerAsync(); bgworker.RunWorkerCompleted += Bgworker_RunWorkerCompleted; lb.Items.Add("start"); } private void Bgworker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs ..