개인적으로 do while도 사용 빈도가 낮은 문법 중에 하나인데요.
다른 분들은 자주 사용하시는지 모르겠네요.
일단 기본적인 사용 방법먼저 설명해 보겠습니다.
do
statement
while ( expression ) ;
msdn 에는 이렇게 정의 되어 있네요.
"expression(조건식이) 0(거짓)이 될때까지 statement(문)을 계속 실행 된다."
while과 다른점은 조건식과 관계없이 무조건 1번은 실행 된다는 점 입니다.
static void Main(string[] args)
{
Console.WriteLine("start");
int i = 0;
do
{
i++;
Console.WriteLine($"{i}");
}while(i < 10);
Console.WriteLine("end");
}
i 를 하나씩 증가 시키다가
i 가 10이상이 되면 빠져나오는 구조 입니다.
조건식을 i > 10으로 변경하면 어떻게 될까요
while( i > 10) 으로 변경하고 실행해 보았습니다.
무조건 한번은 실행되고 조건식이 거짓이기 때문에 바로 끝나게 됩니다.
사용 법은 이제 알았으니 어떤식으로 활용할 수 있을지 살펴 볼까요.
바로 코드를 보겠습니다.
public static async void ReadAsync(HttpResponseMessage msg)
{
using (var stream = await msg.Content.ReadAsStreamAsync())
{
int totalRead = 0;
var buffer = new byte[1024];
bool isMoreRead = true;
do
{
var read = await stream.ReadAsync(buffer, 0, buffer.Length);
if (read == 0)
{
isMoreRead = false;
}
else
{
var data = new byte[read];
buffer.ToList().CopyTo(0, data, 0, read);
totalRead += read;
}
}while(isMoreRead);
}
}
do while을 비동기 스트림에서 함께 사용하는 방법을 보겠습니다.
boolean 타입 isMoreRead 가 조건식으로 되어 있습니다.
false로 변하면 빠져 나오는 구조 입니다.
반복문은 stream에서 읽을 buffer가 남아 있는지 계속 체크 하고 있네요.
벌써 눈치 채신 분들도 있겠지만...
progressbar의 value로 활용을 할수가 있겠습니다.
꼭 이렇게 코드를 짜야 한다는 법은 아니지만 이렇게 활용할 수도 있다는 정도만 아시면 될 것 같습니다.
github 링크
https://github.com/Helloezzi/howtouse_dowhile
Helloezzi/howtouse_dowhile
Contribute to Helloezzi/howtouse_dowhile development by creating an account on GitHub.
github.com
'Programing > C#' 카테고리의 다른 글
Selection Sort (선택 정렬) (0) | 2021.02.16 |
---|---|
Bubble Sort(버블 정렬) (0) | 2021.02.15 |
double vs decimal (0) | 2020.02.11 |
c# reflection 을 이용해서 assembly의 type과 method의 갯수 파악하기 (0) | 2020.02.11 |
c# delegate event 사용하기 실전예제 (0) | 2019.09.01 |