본문 바로가기

ASP.net with C# (웹폼)

C# 람다식이란? 1. 람다식의 의미 람다(Lambda)라는 용어와 C#에서 제공하는 람다식과는 어떤 연관관계가 있는 것일까요? 람다라는 단어가 생소하니 람다식이라고 하면 언뜻 그 의미가 잘 떠오르질 않습니다. (개념이 궁금하신 분은 나무위키를 참고하시기 바랍니다) 이 글에서는 LINQ에서 람다식의 활용에 한정해서 설명하도록 하겠습니다. 일단 다른건 다 잊으시고 람다식 = 익명함수를 의미한다 라고 이해하시기 바랍니다. 결론부터 얘기하자면 람다식은 다음과 같은 코드를 의미합니다. x => x*10 위의 코드 한 줄이 우리가 알아야 하는 람다식의 전부입니다. =>연산자 때문에 괜히 어렵게 느껴지는 위의 식은 x를 파라미터로 받아 x*10한 결과를 리턴하는 함수를 의미합니다. 익명(무명) 메소드와 비슷.. 더보기
C# 삼항연산자(Ternary Operator)로 간결한 코딩을! 삼항연산자(?)란 피연산자의 갯수가 3개인 조건부 연산자를 의미합니다. if else 구문을 한줄로 간단하게 표현할 수 있기 때문에 인라인 if(inline-if)라고도 합니다. if else 구문과 결과는 동일하지만 if else 구문은 여러줄로 작성되는 반면, 삼항연산자를 사용하면 한줄로 간단하게 표현할 수 있기 때문에 소스가 간결해집니다. 다음의 코드를 통해 if else와 삼항연산자의 차이를 알아보도록 하겠습니다. if else int number = 2; bool isEven; if (number % 2 == 0) { isEven = true; } else { isEven = false; } ? : 삼항연산자 int number = 2; bool isEven; isEven = (number % .. 더보기
C# 반올림, 올림, 버림 - 0.5는 왜 1이 안되는가? 반올림은 매우 간단하게 Round() 함수를 이용하면 됩니다. 하지만 반올림이 여러분이 생각하는 것처럼 동작하지 않는다면 이번글을 끝까지 읽어주시기 바랍니다. 이번글 에서는 Math클래스의 Round(), Ceiling(), Truncate() 메소드 등을 이용한 반올림, 올림, 버림 방법에 대해 알아보겠습니다. 특히 반올림에서는 우리가 일반적으로 생각하는 .5가 1이 되도록 하기위해선 MidpointRounding.AwayFromZero를 사용해야 함을 특히 주의하시기 바랍니다. 반올림 - Math.Round() double val1 = 2.1; double val2 = 2.5; double val3 = 2.6; double val4 = 2.71; int result1 = (int)Math.Round(.. 더보기
C# using과 try catch finally의 차이점 여러분도 try catch 구문을 많이 사용하시죠? DBConnection과 같이 반드시 닫아주어야 하는 객체를 사용할 땐 finally를 꼬박꼬박 작성하고 있을겁니다. using은 이 try finally와 동일하게 동작하는 구문인데요. try finally구문과 비교해 어떤 잇점이 있는지 사용법에 대해 알아보도록 하겠습니다. MS Docs엔 다음과 using구문에 대해 다음과 같이 설명하고 있습니다. (원문보기) using구문은 using블록 내에서 어떤 예외적인 상황이 발생한다 하더라도 Dispose가 호출되는 것을 보장합니다. 이는 여러분이 try블록 내에 객체를 두고 finally블록에서 Dispose를 호출 하는 것과 동일한 결과를 얻어낼수 있음을 의미합니다. 이것은 실제로 using구문이 컴.. 더보기
C# 엑셀 셀 형식표(mso-number-format) 웹프로그래밍을 하다보면 데이터 엑셀다운을 구현하는 경우가 많습니다. 이 때 태그를 사용하여 데이터 테이블을 만들고 엑셀형식으로 변환후 다운로드를 받는 과정에서 00001과 같이 숫자로만 구성된 문자일 경우 숫자 1 처럼 변환되어 난감한 경우가 있습니다. 이럴땐 엑셀의 셀에 해당하는 태그의 스타일을 지정해주면 원하는 결과파일을 다운로드 하실 수 있습니다. 아래의 표에서 지정하실 셀 스타일을 확인하세요. 엑셀 셀 형식표 셀 스타일 결과 mso-number-format:"0" 정수 mso-number-format:"0\.000" 소숫점 3자리 mso-number-format:"\#\,\#\#0\.000" 콤마, 소숫점 3자리 mso-number-format:"mm\/dd\/yy" mm/dd/yy mso-num.. 더보기
System.ArgumentNullException: '값은 null일 수 없습니다. 문제 해결 C# 프로그래밍을 하다 제목과 같은 황당한 오류를 맞이할 때가 있습니다. 컴파일 타임에는 발견되지 않았던 문제인데 런타임시 "오류메시지는 대부분 어떤페이지 몇째줄, 어떤 클래스 몇째줄에서 이런 오류가 있어요~" 라고 친절하게 알려주지만 이 오류는 Stack Trace를 아무리 유심히 봐도 어디에서 오류가 났다는 건지 단서가 없습니다. 이런 오류는 실제 운영환경에서는 발생하지 않기도 합니다. 개발환경에서 주로 일어나죠. 소스코드에 문제가 있는건지 의심되는 부분을 아무리 수정해 봐도 해결되지 않았습니다. System.ArgumentNullException: '값은 null일 수 없습니다. 매개 변수 이름: key' Value cannot be null. Parameter name: key Descriptio.. 더보기
C# 세션 삭제하기 C# 웹프로그램에서 세션을 완전히 삭제하려면 다음의 세 줄을 코딩하셔야 합니다. 1. 페이지에서 세션삭제 처리시 Session.Clear(); //세션에 저장된 값 삭제 Session.Abandon(); //세션 컬렉션을 삭제 Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); //세션에 사용했던 쿠키삭제 2. 클래스에서 세션삭제 처리시 (HttpContext.Current를 붙여주세요) HttpContext.Current.Session.Clear(); HttpContext.Current.Session.Abandon(); HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_Sess.. 더보기
런타임이란? 컴파일타임 과의 차이는? 런타임(Runtime)과 컴파일타임(Compiletime)의 차이점은 무엇인가? 런타임과 컴파일타임에 대해 가장 쉽게 설명한 글이 있어 번역해 보았습니다. 원문보기 런타임(Runtime)과 컴파일타임(Compiletime)은 소프트웨어 프로그램개발의 서로 다른 두 계층의 차이를 설명하기 위한 용어이다. 프로그램을 생성하기 위해 개발자는 첫째로 소스코드를 작성하고 컴파일이라는 과정을 통해 기계어코드로 변환 되어 실행 가능한 프로그램이 되며, 이러한 편집 과정을 컴파일타임(Compiletime) 이라고 부른다. 컴파일과정을 마친 프로그램은 사용자에 의해 실행되어 지며, 이러한 응용프로그램이 동작되어지는 때를 런타임(Runtime)이라고 부른다. "런타임"과 "컴파일 타임"이라는 용어는 종종 서로다른 두 가지.. 더보기
C# SMTP 메일발송, 옵션에 대한 설명 C#에서 SMTP 메일 보내기 이번 글에서는 C#에서 SMTP 메일 보내기입니다. 먼저 최종적인 코드는 다음과 같습니다. 아래 코드에서 부가적인 기능은 메일 발송시 메일참조 추가하기, 파일 첨부하기 등입니다. using System.Net.Mail; using System.Text; void MailSetting() { MailMessage message = new MailMessage(); message.To.Add("receiver@gmail.com"); message.From = new MailAddress("sender@gmail.com", "홍길동", System.Text.Encoding.UTF8); MailAddress bcc = new MailAddress("bcc@gmail.com");//.. 더보기
C#코딩시 정말 간단한 팁을 소개합니다. C# 코딩시 정말 간단한 팁들 string[] 을 string 으로 컨버팅하기 string weekdays = "월,화,수,목,금,토,일"; // ,로 연결된 문자열이 있습니다. string[] arrWeekdays = weekdays.Split(','); //배열로 만듭니다. string weekdays2 = String.Join(",", arrWeekdays); //배열을 다시 ,로 연결된 문자열로 만듭니다. .aspx 파일에서 네임스페이스 정의하기 DataTable 복사, .Clone()과 .Copy의 비교 DataTable.Clone()은 데이터테이블 스키마만 복사 DataTable.Copy()는 데이터테이블 스키마 및 데이터 복사 PreparedStatement 방식 쿼리에서 Null값을 넣을때.. 더보기