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
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

최대값 구하는 알고리즘


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 = { 16924, 18 };
                      int max = data[0];
                            
//여기가 최대값 구하는 알고리즘
                      for (int i = 0; i < data.Length; i++)
                      { 
                          if(max < data[i])
                          {
                              max = data[i];
                          }
                      }
 
                              
                      Console.WriteLine("최대값 : {0}", max); ;
                  }    
              }

//cs


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

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

+ Recent posts