프로그래밍 150

[C#] 코딩의기술(실전편) - 2.5 Checked 키워드

Checked 키워드 : 정수 형식 산술 연산 및 변환에 대한 오버플로우 검사를 명시적으로 사용하도록 설정하는 데 사용됩니다. UnChecked 키워드 :정수 형식 산술 연산 및 변환에 대한 오버플로 검사를 비활성화하는 데 사용됩니다. 오버플로우 예제 static void Main(string[] args) { var num = 1234; for (int i = 0; i < 21; i++) { num *= 2; Console.WriteLine(num); } for (int i = 0; i < 21; i++) { num /= 2; Console.WriteLine(num); } Console.WriteLine(num); } 실행결과 오버플로우 발생하여 '1293942784 * 2 = -1707081728'이..

[C#] 코딩의기술(실전편) - 2.3 Format 메서드

1.인수의 불일치로 발생하는 예외 다음 예제코드를 봅시다. 서식 지정 문자열에서 사용하는 인수의 개수와 실제 인수의 개수가 일치하는지는 자동으로 확인하지 않습니다. 컴파일 오류는 발생하지 않지만 컴파일 시 예외가 발생합니다. 서식 지정은 {0}~{9} 까지 10개가 있지만, 인수에 지정한 변수는 9개 이므로 예외 발생합니다. static void Main(string[] args) { var a = "A"; var b = "B"; var c = "C"; var d = "D"; var e = "E"; var f = "F"; var g = "G"; var h = "H"; var i = "I"; var j = "J"; Console.WriteLine("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}",..

[C#] 코딩의기술(실전편) - 2.2 변화하는 조건

오류 발생 가능한 코드 코드만 보면 오류가 없어보이는 코드입니다. DateTime birthday = new DateTime(2016,1,1); if(birthday == DateTime.Today) { var client = new WebClient(); var message = client.DownloadString("http://..."); Console.WriteLine(message); Console.WriteLine("{0:yyyy/MM/dd}, 생일 축하.", DateTime.Today); } 아래 상황에서 날짜 확인 시점과 출력할 때 시점이 달라서 오류가 발생할 수 있습니다. 다른 서버에 접속하는 경우 서버가 느리면 시차가 발생하여 시간 차이가 수십 초가 발생하여 오류 발생할 수 있습니다...

[C#] 코딩의기술(실전편) - 1.7 예외처리

1.예외처리 이메일을 파일로 저장한 후에 다시 읽는 시스템이 있다고 가정해봅시다. 작성한 파일을 확실하게 읽을 수 있을까요? 만약 메일이 바이러스에 걸렸다면 백신이 다른 곳으로 격리시키는 상황이 왔다면, 읽으려는 파일이 원래 읽으려는 위치에 없을 수 있습니다. 이런 경우 격리시킨 파일 이외에 나머지 파일은 이어서 읽을 수 있어야합니다. 2.예외가 발생하는 코드 다음은 존재하지 않는 파일을 읽다가 예외가 발생하는 코드입니다. b.txt파일이 작성된 적이 없어서 파일을 찾지 못해 예외가 발생합니다. static void Main(string[] args) { File.WriteAllText("a.txt", "hello A"); File.WriteAllText("c.txt", "hello C"); Consol..

[C#] 코딩의기술(실전편) - 1.6 강제 종료 처리

Flush()와 Close() Flush() : 이 스트림의 버퍼를 지우고 버퍼링된 모든 데이터가 파일에 쓰여지도록 합니다. 파일에 데이터가 기록될 예정이지만, 아직 기록되지 않은 데이터를 저장합니다. Close() : Flush()의 기능 + '파일 닫기' 기능을 추가합니다. 사용예제 using System; using System.IO; using System.Threading; using System.Threading.Tasks; class Solution { static void Main(string[] args) { String fileName= "test.txt"; var writer = new StreamWriter(Path.Combine(Environment.GetFolderPath(Env..

[C#] 코딩의기술(실전편) - 1.5 비동기 처리

비동기 처리란? (Asynchronous) 특정 로직의 실행이 끝날때까지 기다려주지 않고 나머지 코드를 먼저 실행하는것을 비동기 처리라고 합니다. 비동기처리가 필요한 이유는 서버로 데이터를 요청했을 때, 서버가 언제 그 요청에 대한 응답을 줄지 모르는데 마냥 기다릴순 없기 때문입니다. 장점 결과가 반환될 때까지 다른 작업을 할 수 있으므로 효율적으로 자원을 사용할 수 있습니다. 비동기 메서드의 경우 메소드 호출만 할 뿐 그 결과를 기다리지 않습니다. 여러가지 일을 동시에 처리할 수 있습니다. 단점 동기 방식(Synchronous)에 비해 코딩하기 복잡합니다. 결과 값 반환까지 시간이 더 소요 될 수 있습니다. 비동기 코드 task를 이용한 비동기 코드입니다. 사실 다음 예제 코드에 ReadToEndAsy..

[C#] 코딩의기술(실전편) - 1.4 병렬처리

동기 처리, 비동기 처리, 병렬 처리 한개 프로세스 안에서 동시에 여러 개의 일을 하려면 다중 쓰레드(Thread)가 필요합니다. 동시에 여러 개의 일을 한다는 측면에서 비동기와 병렬처리는 맥락을 같이합니다. 동기 처리 : 책을 읽듯이 순차적으로 처리하는 것 입니다. User의 입력이 필요한 경우, User 입력을 받기 전까지는 다음 줄로 넘어가 실행할 수 없는 상태로 컴퓨터는 멈춰있을것이다. 비동기 처리 : 실행되는 타이밍을 다 맞추는 것이 아니라 User 입력을 받는 부분은 별도로 처리한다. 병렬처리 : 병렬 처리란 여러 개의 프로세서를 통해 하나의 프로그램을 처리하는 것을 말합니다. 처리 부하를 분담하여 처리 속도의 향상시킵니다. 참고 https://docs.microsoft.com/ko-kr/do..

[C#] 코딩의기술(실전편) - 1.3 순차처리

동기(Synchronous), 비동기(Asynchronous), 블락(Blocking), 넌블락(Non-Blocking)의 개념 https://jins-dev.tistory.com/entry/%EB%8F%99%EA%B8%B0Synchronous-%EC%9E%91%EC%97%85%EA%B3%BC-%EB%B9%84%EB%8F%99%EA%B8%B0Asynchronous-%EC%9E%91%EC%97%85-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%B8%94%EB%9D%BDBlocking-%EA%B3%BC-%EB%84%8C%EB%B8%94%EB%9D%BDNonBlocking-%EC%9D%98-%EA%B0%9C%EB%85%90 Task 값을 반환하지 않고 일반적으로 비동기식으로 실행되는 단일 작업을 ..

[C#] LINQ 연습하기

LINQ 연습하기 Exists ForEach Where Select using System; using System.Collections.Generic; using System.Linq; namespace Sample_TEST { class SampleProgram { public static void Main(string[] args) { // list 선언 및 초기화 var nums = new List { 12, 87, 94, 14, 53, 20, 40, 35, 76, 91, 31, 17, 48 }; //Q1. LINQ의 Exists 메서드 사용하여, 8, 9로 나누어 떨어지는지 확인 if (nums.Exists(x => x % 8 == 0 || x % 9 == 0)) Console.WriteLine..

프로그래밍/C# 2022.03.27

[C#] 문자열 거꾸로 변환하기

String 변수 거꾸로 출력하기 string 형 변수의 문자열을 거꾸로 바꿔 출력하는 방법을 알아봅시다. EX> "안녕하세요" -> "요세하녕안" using System; namespace Sample_TEST { class SampleProgram { public static void Main(string[] args) { // str 변수 선언 및 초기화 string str = "Hello World."; // str을 char형 배열로 변환 후 reversStr변수에 초기화 char[] reverseStr = str.ToCharArray(); // Array.Reverse()메서드 사용하여 // 매개변수의 요소들을 역순으로 재배열 Array.Reverse(reverseStr); // str 문자열..

프로그래밍/C# 2022.03.27