본문 바로가기

728x90
반응형

프로그래밍&IT

(118)
[.Net C#] Datagridview에서 문자열 -> 숫자열 정렬하기 Datagridview 소트할때, 숫자값으로 정렬하기 Visual Studio에서 기본 제공하는 DataGridView에서는 헤더를 클릭해서 정렬시기본정렬은 문자열기준으로 됩니다. (아래는 제가 개인적으로 만드는 프로그램입니다...)아래는 주식수헤더를 가지고 정렬할때,기본적인 정렬 기준은 문자열이다보니 아래처럼 정렬이 되는데요. [기본 오름차순 & 내림차순한 결과값] 1. DataGridView에서 숫자값 비교하지만, 필요할때는 숫자값을 비교해서 정렬할때가 필요할텐데요.DataGridView의 이벤트인 SortCompare를 등록후 아래처럼 코딩하면 숫자값정렬이 가능합니다. private void dataGridView_SortCompare(object sender, DataGridViewSortComp..
[.Net C#] 확장메서드 (extension method) .Net C# - 확장메서드(Extension method)를 사용해보자. .Net 3.5버전부터 새로 추가된 기능입니다. 기존에 사용되거나 만들어진 클래스, 구조체, 인터페이스 구현 혹은 타입을 직접 변경하지않고 기능을 확장해 사용하는 방법입니다. Int같은 데이터타입이나 만들어진 Class에도 적용이 가능합니다. 몇가지 알아야 할 점들이 있습니다.* 확장메서드는 정적 클래스의 멤버로 정의해야한다.* 확장메서드의 첫번째 매개변수는 this 키워드를 한정자로 써야한다 (그리고 첫번째만)Ex) static class TestExtension {public static void DisplayMethod(this object obj) { ... }...}* 현재 메모리상에 존재하는 객체의 인스턴스를 통해 확장..
C# nullable타입 변수, 데이터 타입? 형식 & ?? 연산자 C# Nullable 타입변수 관련, [데이터타입?] 그리고 ?? 연산자 데이터타입? 선언 Ex) int? nInt , bool? nBool 등int, bool 등의 값 타입에 ?를 사용하여 null을 할당할 수 있게 해주며데이터타입 선언시 ? 사용은제네릭 System.Nulable 구조체 타입의 인스턴스를 생성하는 구문의 단축표기법입니다. 하단의 내용처럼 직접 Nullable을 사용할 수 있습니다. static void Main(string[] args) { //int n1 = null; 일반값 타입에 null을 할당할수없다 int? n2 = null; //bool b1 = null; 일반값 타입에 null을 할당할수없다 bool? b2 = null; //string? str = "Hello"; Con..
C# 암시적 타입변환 변수, var 타입 C# 암시적 타입변환, var 타입 지역변수의 타입 선언시 int, float, long, char 등으로 명시적으로 해오셨을텐데요. var를 이용하면 암시적으로 타입변환해서 사용할수있습니다.- 반복문이나 LINQ사용시 리턴되는 데이터타입관련없이 사용할수있다는 장점이 있으나 아래 서술되는 항목처럼 몇가지 제한 사항이 존재합니다. - private, public 등 클래스의 필드데이터로 쓸 수 없다- 반환값으로 쓸수없다- 매개변수타입으로 쓸 수 없다- null 초기화 못함. 컴파일러가 변수의 타입을 추정할 수 없으므로 단, 참조타입의 경우 할당 후 null할당은 가능- 형식 제약이 엄격한 타입이므로 원래 초기값과 다른 타입의 값을 가질 수 없다- nullable지정은 불가능 class Program { /..
System.Environment 클래스관련해서 [C#.Net System.Environment 클래스와 관련되어서] 저는 책을 훝어보면서 복습을 자주 하는 편입니다. (원한는 항목이나 내용을 잘 못 외우겠네요... ㅋㅋㅋ)이번에 다시금 책을 훝어보다가 System.Environment 클래스관련되어서 다시 보게 되었네요. 각자 PC의 기본적인 (정말 기본적인...) 정보를 이 Environment 클래스를 이용해서 살펴볼 수 있습니다. namespace ConEx06{ class Program { static void Main(string[] args) { //명령줄인자 조회하기 string[] thisArgs = Environment.GetCommandLineArgs(); foreach(string str in thisArgs) Console.Wr..
Thread 관련 간단 정리2. 멀티스레드 관련 - ThreadPool 이번엔 멀티스레드관련해서 ThreadPool부터 진행합니다. ThreadPool 이용한 비동기 메서드 호출 (System.Threading)비동기 메서드 작업을 위해서 QueueUserWorkItem 메서드를 사용합니다. namespace ConEx06{ class Program { static void Main(string[] args) { ThreadPool.QueueUserWorkItem(new WaitCallback(Async1)); //메인스레드 진행시키기. for(int n=0; n< 10; n++) { Thread.Sleep(1000); //계속되는 일이라는 가상을 위해서 Sleep을 Console.WriteLine("Main Thread..."); } ThreadPool.QueueUserW..
Thread 관련 간단 정리1. Thread / ThreadStart / ParameterizedThreadStart 개인적으로 중요하다고 생각되는 Thread 관련 처리입니다. Thread 클래스 (System.Threading)단순한 쓰레드 생성 및 실행입니다.여기서 ThreadStart는 파라메터를 전달하지 않습니다. using System.Threading;namespace ConEx06{ class Program { static void Main(string[] args) { Thread t1 = new Thread(new ThreadStart(Run)); //델리게이트 타입으로 전달 t1.Start(); } //실행할 함수 public static void Run() { for(int i=0; i Sum(100, 100, 100)); //람다식 이용해서 전달할수도... t2.Start(); } static v..
Params 한정자, 매개변수 배열 Param; 함수에 가변적인 매개변수 전달시 배열로 전달배열은 이미 아신다는 전제하에... - 동일한 타입을 갖는 여러개의 매개변수를한개의 매개변수 (즉 배열)로 전달하는 역할입니다. double값의 가변적 매개변수를 받아서 평균을 구하는 함수를 구현해보겠습니다. namespace ConEx01{ class Program { static void Main(string[] args) { Console.WriteLine("Avg is {0}", CalcAvg(1.0, 2.0, 3.6, 4.0)); Console.WriteLine("Avg is {0}", Math.Round(CalcAvg(3.0, 4.0, 5.5), 3));// 소수점 3자리까지만 결과를 보여주기위해서 Math.Round 함수를 사용 } st..
[C#] Cross Threading 처리 : InvokeRequired 속성 UI 그리고 Thread 프로그래밍하다 간혹 "크로스 스레드" 문제를 부딪치게 되면서, Invoke 및 Control.InvokeRequired 속성을 알아보게 되었습니다. 스레드들에 대해 약간 보자면... - Thread Affinity(스레드 선호도) : 기본적으로 그 UI 컨트롤을 생성한 쓰레드만이 해당 UI객체를 접속 가능. - UI 스레드 : UI 컨트롤을 생성하고 이 컨트롤의 윈도우 핸들을 소유한 스레드 - Worker 스레드 : 이런 UI 스레드를 갖지 않는 스레드 예제 using System.Threading; namespace FrmEx10 { public partial class Form1 : Form { private Thread m_thread = null; public Form1(..
C# & SQLite3 연결하기 - C# 프로젝트 생성부터 테스트완료 이번엔- C# 프로젝트 만들고 준비작업- test까지..의 단계로 완료하겠습니다. 2. C# 프로젝트만들고 준비작업간단한 테스트를 위한 콘솔프로젝트를 만듭니다.그리고 필요한 .dll들을 임포트시킵니다.솔루션 탐색기 -> 참조 -> 참조추가를 합니다. (저같은 경우는 필요한 dll파일들을 모두 새로 생성한 프로젝트에 카피를 했습니다.)가장 필요한 System.Data.SQLite 만 일단 추가를 했습니다. 그리고 만들어두었던 test.db도 해당 프로젝트에 복사를 했습니다.(기존에 생성한 db에 있는 테이블의 내용을 불러올것입니다.) 그런데, 제 PC가 64비트 윈도우여서 그런지 몰라도,추가로 설치해야 할 dll 인 ' SQLite.Interop.dll ' 참조추가를 할 수 없더군요...그리고 이 dll ..

반응형