using문을 이야기하려면 IDisposable 인터페이스에 대한 이야기를 해야 합니다.

 

기본적으로 닷넷은 가비지 컬렉터에 의해서 모든 리소스를 자동으로 관리한다고 소개하였고 실제로도 그렇습니다. 하지만 중요한 맹점이 하나 있는데, 닷넷 프레임워크 외부의 비관리 영역상의 자원에 대해서는 해당되는 부분이 없습니다. 파일 핸들, 메모리 핸들, 데이터베이스 연결, 소켓 핸들, 스레드 핸들, 세마포어 등의 모든 비관리 자원들에 해당되는 것입니다.

 

단순히 가비지 컬렉터에 의하여 처리되기를 기다린다면 이들 자원들은 사용량이 집중될 경우 고갈되어 시스템에 문제가 생길 수 있습니다. 따라서 이를 사전에 예방하고 효율적으로 관리하기 위해서 명시적인 소멸자를 직접 구현할 수 있는데, 이것이 IDisposable 인터페이스를 통해서 가능합니다.

 

본디, IDisposable 인터페이스로 소거를 시도하기 위해서는 아래와 같은 모양의 문법을 사용합니다.

 

IDisposable myObj = new SomethingDisposable();

 

try { /* try something here with myObj */ }

catch { throw; }

finally { if (myObj != null) myObj.Dispose(); }

 

위의 코드를 문법적으로 잘 포장한 것이 using 문입니다.

 

using (IDisposable myObj = new SomethingDisposable())

{

   /* try something here with myObj */
}


출처 http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=117078&ref=117075



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(queryString, connection);
    command.Connection.Open();
    command.ExecuteNonQuery();
}
 
 
//위아래 코드는 같다
//저절로 close가 됨
 
{
    SqlConnection connection = new SqlConnection(connectionString);
 
    try 
    {            
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery(); 
    }
    finally
    {
        if (connection != null)
            ((IDisposable)connection).Dispose();
    }
}
cs


'C#' 카테고리의 다른 글

엑셀 다루기  (0) 2019.01.30
C# 최소값 구하기(알고리즘)  (0) 2019.01.30
C# 최대값 구하기(알고리즘)  (0) 2019.01.29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Excel Application 실행하기
        Excel.Application app = new Excel.Application();
        
        // 새로운 워크북 열기
        Excel.Workbook workbook1 = app.Workbooks.Add();
 
        // 기존에 있는 워크북 열기  (openFileDialog.FileName)가능
        Excel.Workbook workbook1 = app.Workbooks.Open(Filename:"주소");
 
        //저장하기
        workbook1.Save();
 
        //원하는 이름으로 저장하기
        workbook1.SaveAs(FileName:"저장하고픈 이름");
 
        // 새로운 워크싯 열기
        Exel.Worksheet ws = workbook1.Worksheets.Add();
 
        // 새로운 워크싯 열고 추가로 더열기(1)  총 2개
        Exel.Worksheet ws = workbook1.Worksheets.Add(Count:1);
 
        // 워크북에 있는 Sheet1 워크싯 가져오기
        Excel.Worksheet ws = workbook1.Worksheets.Item["Sheet1"];
        Excel.Worksheet ws2 = workbook1.Worksheets.Item["Sheet2"];
 
        // Sheet1이 Sheet2앞으로 오도록
        ws.Move(After: ws2);
 
        // 워크싯 이름을 내가 원하는 것으로 변경
        ws.Name ="원하는 이름으로 ㅎ";
 
        //워크싯 삭제하기
        ws.Delete();
 
        //마지막 워크싯 가져오기
        Excel.Worksheet ws = workbook1.Worksheets.Item[ workbook1.Worksheets.Count -1 ];
 
        // 워크싯 1,1 선택
        Excel.Range range = ws.Cells[1,1];
 
        // 워크싯 여러 범위 선택
        Excel.Range range = ws.range[ws.Cells[11], ws.Cells[33]];
 
        // 엑셀 범위 잡아도 됨
        Excel.Range range = ws.range["A1:C3"];
 
        // 값 넣기(문자도 가능)
        range.value = 1;
 
        //마지막 처리
        workbook.SaveAs("파일이름");
        workbook.Close();
cs


'C#' 카테고리의 다른 글

C# using 쓰는 이유  (0) 2019.01.31
C# 최소값 구하기(알고리즘)  (0) 2019.01.30
C# 최대값 구하기(알고리즘)  (0) 2019.01.29


1
2
3
4
5
6
7
8
9
10
11
//현재 셀 값을 표시
datagridviewA.CurrentCell.Value;
 
//현재 셀의 열 인덱스를 표시
datagridviewA.CurrentCell.ColumnIndex;
 
//현재 셀의 행 인덱스를 표시
datagridviewA.CurrentCell.RowIndex;
 
//  datagridviewA.currentRow, 등등 여러가지로 응용할 수 있다
//(0, 0)에 현재셀을 위치하고 싶을때 DataGridView1.CurrentCell = DataGridView1[0, 0];
cs


'Winform' 카테고리의 다른 글

winform 열 숨기기  (0) 2019.01.30
winform 헤더, 셀 값 가운데로 정렬  (0) 2019.01.30
winform 각 행의 색표시  (0) 2019.01.30
winform 차트 예제  (0) 2019.01.30
winform 엑셀 저장(초고속)  (0) 2019.01.29

데이터 그리드 뷰 열을 숨겨야 할 때가 있는데 한번 보겠습니다


1
2
3
4
//CustomerID column 숨기기
//원래 값은 true
//this 안써줘도 됩니다

this.dataGridView1.Columns["CustomerID"].Visible = false;
cs


'Winform' 카테고리의 다른 글

winform 현제 셀값 가져오기(위치포함)  (0) 2019.01.30
winform 헤더, 셀 값 가운데로 정렬  (0) 2019.01.30
winform 각 행의 색표시  (0) 2019.01.30
winform 차트 예제  (0) 2019.01.30
winform 엑셀 저장(초고속)  (0) 2019.01.29

헤더와 셀 값을 가운데로 정렬해보자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
            // 헤더 값을 가운데로 정렬
            dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;            
            
            // 셀 값을 가운데로 정렬
            dataGridView1.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
 
            // 0번째 컬럼값 전체 가운데로 정렬
            dataGridView1.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
 
            // Column1의 전체 셀값 가운데로 정렬
            dataGridView1.Columns["Column1"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
 
cs


'Winform' 카테고리의 다른 글

winform 현제 셀값 가져오기(위치포함)  (0) 2019.01.30
winform 열 숨기기  (0) 2019.01.30
winform 각 행의 색표시  (0) 2019.01.30
winform 차트 예제  (0) 2019.01.30
winform 엑셀 저장(초고속)  (0) 2019.01.29

윈폼 사용할때 보면 데이터그리드뷰가 밋밋할 때가 있다 보기도 좋지않고...


그럴때 각 행마다 색을 다르게 하면 좀더 이쁘고 가독성도 좋다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//짝수 홀수 열 색지정
// rows 대신 column을 쓰면 각 column 색이 바꿔집니다 ㅎㅎ
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
       if (i % 2 != 0)
         {
             dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.FromArgb(240255240);
         }
         else
         {
              dataGridView1.Rows[i].DefaultCellStyle.BackColor = Color.FromArgb(240255255);
         }
     }

//짝수 홀수 열 색지정(한줄)

dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Aqua;

cs


'Winform' 카테고리의 다른 글

winform 열 숨기기  (0) 2019.01.30
winform 헤더, 셀 값 가운데로 정렬  (0) 2019.01.30
winform 차트 예제  (0) 2019.01.30
winform 엑셀 저장(초고속)  (0) 2019.01.29
winform 엑셀 죽이기 완벽한 방법  (0) 2019.01.29

윈폼에 있는 차트 예제를 정리해 보았다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
                    //차트 해보자 테스트
 
                    //차트 시리즈1 삭제(초기화)
                    chart1.Series.Clear();
 
                    //시리즈 추가
                    //(각각을 시리즈라하고 Series[0], Series[1]로 표시할 수도 있다
                    chart1.Series.Add("LG");
                    chart1.Series.Add("SPEC");
 
                    //legend 위치
                    //LG, SPEC 두개 시리즈를 합쳐서 하나의 Legends라고 한다 마찬가지로 [0]번지 표시 가능
                    chart1.Legends[0].Alignment = StringAlignment.Center;
                    chart1.Legends[0].Docking = Docking.Bottom;
                    chart2.Legends[0].Alignment = StringAlignment.Center;
                    chart2.Legends[0].Docking = Docking.Bottom;
 
                    //색지정, 스타일 지정
                    // 원래 디폴트 값은 막대이지만 선이나 점선을 하고 싶을때에는 아래와 같이..
                    chart1.Series["SPEC"].ChartType = SeriesChartType.Line;
                    chart1.Series["SPEC"].Color = Color.Red;
                    chart1.Series["SPEC"].BorderWidth = 3;
                    chart1.Series["SPEC"].BorderDashStyle = ChartDashStyle.Dash;
 
                    //포인츠 초기화
                    chart1.Series["LG"].Points.Clear();
 
                    // 값 넣기
                    // LG 시리즈에 1, 100막대를 넣음 AddY()만 써도 
                    chart1.Series["LG"].Points.AddXY(1,100);
 
 
 
cs


'Winform' 카테고리의 다른 글

winform 헤더, 셀 값 가운데로 정렬  (0) 2019.01.30
winform 각 행의 색표시  (0) 2019.01.30
winform 엑셀 저장(초고속)  (0) 2019.01.29
winform 엑셀 죽이기 완벽한 방법  (0) 2019.01.29
winform DataGridView to Excel  (0) 2019.01.22

최소값 구하기 알고리즘


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                using System
              public class 최소값
              {
                  public static void Main()
                  {
 
                      
                      int[] data = { 1692418 };
                      int min = data[0];
                            
                      //여기가 최소값 구하는 알고리즘
                      for (int i = 0; i < data.Length; i++)
                      { 
                          if(min > data[i])
                          {
                              min = data[i];
                          }
                      }
 
                              
                      Console.WriteLine("최소값 : {0}", min); ;
                  }    
              }
 
cs


'C#' 카테고리의 다른 글

C# using 쓰는 이유  (0) 2019.01.31
엑셀 다루기  (0) 2019.01.30
C# 최대값 구하기(알고리즘)  (0) 2019.01.29

+ Recent posts