본문 바로가기

C#

C# 확장메서드의 개념과 작성법, 주요메서드. 1. 확장메서드의 개념 어떤 클래스에 메서드를 추가하고 싶으면 어떤 방법이 있을까요? 다음과 같은 두 가지를 생각해 볼 수 있습니다. 1. 클래스를 수정한다. 2. 클래스를 상속받아 새로운 파생클래스를 만든다. 이 두 가지 방법 이외에 기존의 클래스를 손대지 않고 간단하게 메서드를 추가할 수 있는방법이 하나 더 있는데, 바로 확장메서드(Extension methods)입니다. 확장메서드를 이용하기 위해서는 전제조건이 있는데요, 바로 정적클래스(static class)이어야 한다는 것입니다. 우리가 확장메서드에 대해 알아야하는 이유는 무엇보다도 LINQ를 이해하기 위해서입니다. 확장메서드가 LINQ에 자주 사용되고, 메서드 신택스를 통해 구현되기 때문입니다. 먼저, 쉬운 예제를 통해 확장메서드 만드는 법을.. 더보기
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# 엑셀 셀 형식표(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.. 더보기
런타임이란? 컴파일타임 과의 차이는? 런타임(Runtime)과 컴파일타임(Compiletime)의 차이점은 무엇인가? 런타임과 컴파일타임에 대해 가장 쉽게 설명한 글이 있어 번역해 보았습니다. 원문보기 런타임(Runtime)과 컴파일타임(Compiletime)은 소프트웨어 프로그램개발의 서로 다른 두 계층의 차이를 설명하기 위한 용어이다. 프로그램을 생성하기 위해 개발자는 첫째로 소스코드를 작성하고 컴파일이라는 과정을 통해 기계어코드로 변환 되어 실행 가능한 프로그램이 되며, 이러한 편집 과정을 컴파일타임(Compiletime) 이라고 부른다. 컴파일과정을 마친 프로그램은 사용자에 의해 실행되어 지며, 이러한 응용프로그램이 동작되어지는 때를 런타임(Runtime)이라고 부른다. "런타임"과 "컴파일 타임"이라는 용어는 종종 서로다른 두 가지.. 더보기
C# dynamic 사용 이유 Dynamic형식의 사용 Microsoft Docs에서 그 의미를 찾아보면 다음과 같습니다. 이 형식은 정적 형식이지만 dynamic 형식의 개체가 정적 형식 검사를 건너뜁니다. 대부분의 경우 이 형식은 object 형식을 가지고 있는 것처럼 작동합니다. 컴파일 시간에 dynamic 형식의 요소는 모든 연산을 지원하는 것으로 간주됩니다. 따라서 개체가 값을 COM API, IronPython 같은 동적 언어, HTML DOM(문서 개체 모델), 리플렉션 또는 프로그램의 다른 곳 등 어디서 가져오든 신경을 쓸 필요가 없습니다. 그러나 코드가 유효하지 않으면 런타임 시 오류가 catch됩니다. MS Docs 보기 번역기를 통한 문장이어서 인지 의미가 아리송합니다. @.@ 위의 설명을 이해하려면 먼저 알아야 .. 더보기
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값을 넣을때.. 더보기
C#문자열과 @기호, @의미 C#에서 @기호는 다양한 경우에 사용되지만, 여기서 소개해 드릴 내용은 문자열에 붙여 사용하는 @의미에 대해 설명드리겠습니다.결론을 먼저 말씀드리자면, 문자열 변수 값 지정시 다음과 같은 경우에 @기호를 사용하면 편리합니다. 1. 파일경로 표현시(백슬래시 '\' 사용)2. 쿼리문 작성시(string 여러줄의 문자열 지정) 다음의 코드를 보시면 문자열에 @기호를 사용할때와 하지 않을 때의 의미차이를 쉽게 파악하실 수 있습니다. //일반문자열로 표현시 string file = "C:\\Users\\Downloads\\ReadMe.txt"; string sql = "SELECT " + " Seq " + " , Name " + " , Flavor " + " , Rank " + "FROM Fruit "; //@기.. 더보기
C# var변수 사용법, dynamic과의 차이점 C# var변수 사용법 먼저 var변수란 무엇인지 뜻 풀이부터 보고 사용법에 대해 설명하도록 하겠습니다.(MS Docs 보기) var변수 - 암시적으로 형식화된 지역 변수 암시적 : 뭔가 단서가 있어 유추할 수 있음(반대말:명시적) 형식화된 : 형식이 지정되는(컴파일러가 가장 적합한 형식을 결정해서 할당함을 의미) 지역변수 : 전역변수로 사용할 수 없고, 메소드 내에서만 사용할 수 있음 var변수 사용예 var i = 3; // i 는 int형으로 컴파일 됨 var s = "Hello world"; // s string형으로 컴파일 됨 var a = new[] { 0, 1, 2, 3 }; //a는 int형 배열로 컴파일 됨 var exp = from c in customers where c.City ==.. 더보기