본문 바로가기

전체 글594

62.네트워크프로그램 피씨끼리 데이터 주고 받는 방법을 알아보자. 일단 용어를 몇가지 알아야 한다. * 엔드 포인트 - 아이피 주소와 포트 번호의 조합을 의미합니다. * 소켓 - 네트워크 상에서 돌아가는 두 개의 프로그램 간 양방향 통신의 하나의 엔트 포인트 아이피주소는 흔히 생각하는 192.168.1.1 처럼 숫자로 만들어진 PC 의 주소이고, 포트는 각 피씨에 연결할수 있게 만들어진 숫자로 된 가상의 연결 구멍이라고 생각하면 된다. 참고로 그림1처럼 제어판 에서 방화벽을 들어가서 고급설정을 누르면 피씨가 사용중인 포트가 나온다. 각 프로토콜에 따른 기본 포트는 HTTP=80, FTP=21, TELNET=23, SSH=22, SMTP=25, POP3=110 이다. 대부분 저 포트들은 사용중인 포트라고 생각하면 되고 테스트등.. 2022. 5. 20.
61. 이벤트 이전에 델리게이트를 배웠는데 델리게이트와 동일한 이벤트 라는것도 있다. 앞장들에서 배운 델리게이트는 파라미터용으로 주로 설명했고 이번에 이벤트는 서로 데이터를 주고받는데 최적화 된 내용으로 살펴보자. 이벤트와 델리게이트 차이점을 찾아보면 여러글들이 있는데 설명이 신통치않다. 이래저래 내용을 찾아보다보면 결국 같은거라는 생각이 드는데 아래 글에서 이야기한 내용을 한번 읽어보자. https://www.sysnet.pe.kr/Default.aspx?mode=3&sub=0&pageno=0&detail=1&wid=5375 이벤트와 델리게이트의 차이가 궁금합니다. 이벤트와 델리게이트의 차이가 궁금합니다. [링크 복사], [링크+제목 복사] 조회: 3477 글쓴 사람 영귤 홈페이지 첨부 파일 부모글 보이기/감추기 C.. 2022. 5. 18.
iptime 공유기 각 pc마다 네트워크 사용량을 확인할수 있습니다. 트래픽모니터링 원본 - https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=okchang1&logNo=220220200837 iptime 공유기 각 pc마다 네트워크 사용량을 확인할수 있습니다. 트래픽모니터링 요즘 공유기 많이 사용하는데요.. 혹시 자기 pc가 점점 늦어지는건 아닌지.. 네트워크가 이상한가.. 이럴때가 있는데 확인 할수 있는 방법이 난감하지요. ip공유기에서 바로 확인이 가능합니다. 공유기 비밀번호는 각자 로그인하시구요.. 비밀번호 없으면 그냥 아래링크 누르면 바로 들어갑니다.. http://192.168.1.1/cgi-bin/timepro.cgi?tmenu=trafficconf&smenu=conninfo 192.168.1.1 은 공.. 2022. 5. 17.
60. 유저컨트롤 유저컨트롤은 사용자가 임의로 만들어서 사용하는 컨트롤이다. 로또 추첨기를 생각 해보자. 숫자가 1~45까지 순차적으로 증가한 후 랜덤 숫자로 최종 결정 되는식으로 6개의 숫자를 출력해주는 프로그램이 있다고 생각해보자. 그러면 6개의 컨트롤을 다 만들어 줄 필요없이 1~45까지 순차적으로 증가한후 랜덤 숫자로 최종 결정되는 컨트롤이 있다면 그 컨트롤을 복사해서 사용해주면 훨씬 편할것이다. 간단하게 만들면서 이해해 보자. 그림1처럼 컨트롤 라이브러리를 선택해서 프로젝트를 만들자. (.NET Framework) 확인. 최초 생성하면 그림2와 같은 화면으로 나올것이다. 중앙의 회색부분이 내가만들컨트롤 크기이다. 그림3과 같이 좌측의 도구상자에서 label 을 드래그 해서 중앙에 놔주고 컨트롤의 크기를 적당히 조.. 2022. 5. 17.
59. lock / Monitor / Mutex 앞장마지막 예제에 잠시 Monitor 클래스를 사용하는 예제를 넣었다. 3가지다 간단하게 말하면 다른곳에서 변경못하게 잠궈놓는 역할을 하는것들이다. 아래 예제를 보자. 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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 #define lock1 #define type2 using System; using S.. 2022. 5. 11.
58. Threadpool / BackgroundWorker / Parallel Thread 와 task 를 주로 설명하고 있는데 Threadpool 이라는 클래스로 쓰레드를 다룰수도 있다. 아래글을 먼저 읽어보자. https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=hyungjoon_&logNo=221700870194 Thread vs ThreadPool vs Task 닷넷 C# 마이크로소프트 .net framework는 동시성을 다루기 위한 3가지 방법이 있다. 1. 스레드(Thread) 에 직접접... blog.naver.com 다른블로그들에서도 거의 task 를 추천하는 사람이 많고 내생각도 비슷하다. 개인적으로는 Thread 자체를 쓰는것도 나쁘지는 않다고 생각한다. 하지만 Threadpool 클래스는 사.. 2022. 5. 11.
57. async / await async 와 await 에 대해서 찾아보면 대부분의 포스터 들은 비동기를 위한 키워드라고 적어놨다. 그런데 잘생각해보면 비동기보다는 부분적으로 동기하기 위한 키워드가 더 맞는 표현이라고 생각한다. [예제소스] 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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 9.. 2022. 3. 29.
네트워크 연결확인방법 > using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApp13 { public partial class connectcheck : Form { public connectcheck() { InitializeComponent(); } private void button1_C.. 2022. 3. 20.
56. 쓰레드2(Task) 앞장들에서 배운 Thread 외에도 비교적 최근에 만들어진 Task 클래스로도 멀티쓰레드 프로그램을 만들수 있다. 둘의 차이점은 thread 는 비교적 큰 작업에 사용하고 메인프로세스가 종료되어도 계속 작동하고 , Task 는 비교적 작은 작업에 사용하고 메인 프로그세스가 종료되면 같이 종료 된다 라고 대부분의 글에 되어있다. 개인적으로는 어떤걸 써도 편하고 실수 덜 할만한걸로 사용하는게 좋다고 생각한다. 쓰레드와 태스크는 위에서 말한거 외에도 좀 다른점이 있긴하다. 그림1과 그림2를 비교해보면 그림2가 확실히 자원을 덜 먹는것을 알수 있다. 위쪽은 대량의 쓰레드를 생성하는것이고 아래쪽은 같은작업을 태스크로 한것인데 , 일단 예제부터가 사실 말이 안되긴한다. 프로그램에서 저정도의 쓰레드를 돌릴경우가 과연.. 2022. 2. 27.
55. Action/Func Action 과 Func 를 알아보기전에 지난 부분 잠시 복습을 해보자. 그림1을 보면 바로 지난장에서 학습하던내용이다. 그런데 델리게이트를 꾸준히 선언해줘야 해서 상당히 불편하다. delegate void tempdel(string str); delegate string tempdel2(string str); 선언까지 없애고 그냥 사용하면 되지 않을까 그래서 MS 에서 미리 델리게이트를 선언해놨다. 그림2를 보자. 일단 Action 을 입력하면 두가지 사용가능한 형태가 보인다. 둘다 미리정의된 델리게이트이며 각각 설명이 나와있다. 일단 Action 은 void 반환에 파라미터가 없는 델리게이트 이다. 그리고 아래에 있는 제네릭 형태의 Action 은 파라미터를 받고 void 를 반환하는 형태다. voi.. 2022. 2. 22.
54. 람다식 앞장에서 무명메서드를 통해 델리게이트를 간단히 사용하는 방법을 알아 봤다. 람다식이란것을 사용하면 더 축약이 가능하다. 그런데 이렇게 줄이는것에 대한 단점도 분명히 있다. 디버깅시 소스가 실행되는 경로를 따라가기가 힘들어진다. 일단 쓰레드 자체가 디버깅도 힘든상태인데 소스가 계속 축약되다보니 나중에 다른사람이 소스를 받거나 현장에서 즉대응해야할경우 아무래도 기본소스보다 디버깅/수정 속도가 느려지게 된다. 일단 람다식 형식부터 알아보자. 대리자타입 변수명 = (파라미터) => 함수코드 기본형태는 이런데 실제 소스코드로 확인해보자. 그림1은 이제까지 진행하던 내용까지 합쳐서 테스트해놓은 내용이다. 여기서 하나씩 살펴보자. #if del1 //기본델리게이트 호출 tempdel td = new tempdel(t.. 2022. 2. 17.
53. 무명메서드 앞장에서 델리게이트를 잠시 살펴봤으니 다시 쓰레드로 넘어가보자. 그림1을 보고 잠시 생각해보자. Thread 를 사용하기 위해 객체로 만들면 파라미터로 ThreadStart 나 ParameterizedThreadStart 를 요구한다. 둘다 객체로 만들어서 파라미터로 넘기면 되는데 마우스를 올려보면 둘다 델리게이트 인것을 알수 있다. ParameterizedThreadStart 같은경우는 void 형(반환이 없는형태) 이고 object 를 인자로 받는 함수를 대리호출해주는 델리게이트 이다. ThreadStart 같은경우는 void형에 파라미터가 없는 함수를 대리호출해주는 델리게이트이다. 이렇게 쓰레드를 사용하기위해서는 델리게이트가 뭔지 알아야 한다. 결국 그림1 소스 같은경우는 쓰레드를 실행하는데 그쓰레.. 2022. 2. 8.
52. 델리게이트 앞에서 쓰레드의 가장기본적인 형태를 배웠다. 그런데 이쓰레드들을 사용할때 추가적으로 알아야 할것들이 많다. 일단 델리게이트부터 살펴보자. 델리게이트는 함수를 대신 호출해주는것 이라고 생각하면 된다. 함수를 직접호출하면 되지 왜 대신 호출하는게 필요할까 생각할 수 있다. 대부분의 경우 디커플링때문에 필요하다. 잘이해하기 힘든데 우리가 매번사용하는 버튼클릭이벤트를 한번생각해보자. 이벤트는 델리게이트를 랩핑한 클래스인데 일단 델리게이트와 이벤트는 같다고 생각하고 흐름을 따라가보자. 그림1은 우리가 자주 사용하는 기본 버튼클릭형태의 소스이다. 저기서 button1_Click 를 우클릭해서 모든참조찾기를 눌러보자. 그러면 그림1의 아래 부분에 있는 내용이 나온다. 저기서 this.button1.Click += n.. 2022. 2. 5.
51. 쓰레드1(Thread) 피씨는 한번에 여러일을 하는거처럼 사용할 수 있다. 예를 들면 노래를 들으면서 인터넷서핑을 하거나 파일을 다운로드 받으면서 영상을 보거나 하는것들이 있을수 있다. 이렇게 여러가지 작업들을 동시에 수행하는것은 실제로 여러가지를 한번에 동시에 수행하는것이 아니라 하나를 잠시작업하고 아주짧은시간뒤에 다른걸 또 작업하고 이렇게 여러개를 조금씩 계속 실행하는것이다. 다시 설명하면 한 가지 일을 하다가, 잠시 멈추고 또 다른 일을 하고, 또 멈추고 다른 일을 하다 보면 언젠가는 결국 모든 일을 마치게 된다. 이 동작이 엄청 빨라지면 한 번에 여러가지 일을 하는 것처럼 보이게 되는 것이다. 이작업을 멀티태스킹이라고 하는데 쓰레드는 다른작업을 시작하게 해주는 역할을 한다. 아래 그림을 보자. 그림1을 보면 메인작업 진.. 2022. 2. 4.
눈을떠요 야생소년 공략 0. 쿠폰 - 사용법 메인화면에서 설정 - 접속정보 - 쿠폰입력클릭 후 쿠폰번호입력 - 쿠폰주기 특정주기마다 [게임오픈 매년새해 크리스마스 등등] 일정기한 이후 만료로 등록불가 - 유효쿠폰 welcometwd 별보석 30개 부활앙크 12개를 지급 2022/01/22 현재(2022/01/31까지유효) xmas2021 1. 시스템 - 장르 생존 로그라이크 RPG - 시간개념 턴제 [10AP=1턴] 하루 144턴 낮72턴 저녁20턴 밤40턴 [그림자괴물 출현] 새벽12턴 속도에따라 여러번행동공격가능 Ex. 공속이 높으면 한턴한공격에 확률적으로 여러번 공격이 이루어진다. - 유통기한 인벤토리안에 들어오지 않은 아이템은 유통기한이 지나지 않는다. 즉, 야채 과일 버섯 약초등을 캐고 줍지않거나, 몬스터가 드랍한 고.. 2022. 1. 21.
오랫만에 브라운더스트 복귀했네요 브더 진짜 가끔 생각나서 다시 해볼까 말까 고민하다가 오랫만에 복귀 해서 재밌게 하고 있네요 다른게임과 다른특이한점이 뭔가 체스,바둑 장기처럼 서로 수싸움을 하는 게임이라는 점이네요 일러도 좋구요 지난주 결투장 2위 월드아레나 1위 달성했습니다. 스스로 자축 짝짝짝 2022. 1. 5.
50. 전처리기 / 편의사항 전처리기는 내가 소스를 만들면서 테스트하거나 소스를 편하게 보거나 편의성을 만들수있는 코드이다. 일단 아래 경로를 한번 읽어보자. https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/preprocessor-directives C# 전처리기 지시문 조건부 컴파일, 경고, null 허용 분석 등을 제어하는 다양한 C# 전처리기 지시문을 알아봅니다. docs.microsoft.com 여러가지 내용이 있는데 개인적으로 사용하는것 3가지 정도 밖에없다. 영역정의 , 기호정의 , 조건부컴파일 이정도가 되겠다. 우리가 프로그램을 계속 추가하고 하다보면 당연히 소스코드가 엄청 길어진다. 그런데 일일 내리면서 다보는게 쉽지는 않다. 그래서 디버깅이 힘들어.. 2021. 10. 29.
49. 디버깅 프로그램을 하면서 한번에 코드가 완벽하게 작동하게 만들기는 거의 불가능하다. 물론 간단한 출력프로그램 같은 경우는 그럴일이 없겠지만 대부분의 경우 디버깅이 필요하다. 일단 기본적인 디버깅 방법을 알아보자. 먼저 그림1에서처럼 위쪽 솔로션 구성이 Debug 상태인지 확인한다. 그후 아래 디버그해서 확인할 라인의 앞쪽부분(빨간색동그라미) 를 클릭하면 빨간색 원이 생긴다. 혹은 디버그할 라인을 선택하고 F9 를 누르면 (기본설정일경우) 클릭한것과 마찬가지로 빨간색 원이 생긴다. 빨간색원을 브레이크포인트라고 부르는데 브레이크 포인트는 설정되는 위치가 있고 안되는 위치가 있다. 예를 들면 위그림같은경우 35라인에 브레이크 포인트를 찍으면 거기찍히지 않고 중괄호가 시작되는 36라인에 브레이크 포인트가 찍히게 된다... 2021. 10. 9.
48. 계산기 만들기 ***숙제 : 그림1과 같은 기능을 가지고 있는 계산기를 만들어 보자. 2021. 10. 9.
47. 유즈케이스 모든 프로그램을 만들때는 과정이 단순하지는 않다. 보통 어떤 동작을 해야하는지 파악하고 해당 동작에 대해 이상없이 작동할수 있게 정리한후 해당 프로그램을 제작한다. 최종적으로 같은동작을 하더라도 사람마다 충분히 다르게 생각할수 있고 다른형태로 구성할수 있다. 그리고 같은사람이 같은 행동을 하는 프로그램을 만들더라도 매번 다른형태로 만들수도 있다. 프로그램이 간단해서 잠깐의 시간동안 제작가능한거라면 위의 생각하는 전체 과정을 머리속에 생각하면서 할수 있을것이다. 그런데 만약 프로그램이 하루만에 불가능하고 오래 걸린다면 내 머리속의 전체 과정을 계속 같은형태로 유지할수 있을까? 물론 다 기억할수도 있겠지만 간단하게 기록해두거나 하면 그 기록을 보면서 제작의 일관성을 높일수도 있고 생각하지못해 빠뜨린부분도 체.. 2021. 10. 9.
46. 엑셀파일읽기 ***숙제 : 위그림처럼 엑셀파일경로를 지정해서 내용을 읽어오는 프로그램을 만들어보자. 2021. 10. 9.
45. 파일읽기/쓰기 파일을 읽고 쓸려면 File 클래스를 사용하면 된다. https://docs.microsoft.com/ko-kr/dotnet/api/system.io.file?view=net-5.0 File 클래스 (System.IO) 단일 파일에 대한 만들기, 복사, 삭제, 이동 및 열기를 위한 정적 메서드를 제공하고 FileStream 개체 만들기를 지원합니다.Provides static methods for the creation, copying, deletion, moving, and opening of a single file docs.microsoft.com 기본적인 내용은 위 경로를 읽어보자. 파일이나 DB 또는 네트워크로 데이터를 전송할때 대부분의 경우 내용을 변환해서 서로 주고 받게 되는데 이과정에서 데.. 2021. 10. 9.
44. 로또생성기만들기 ***숙제 : 위그림처럼 번호받기 누르면 번호와 보너스 번호가 출력되는 로또생성기를 만들어보자. 2021. 10. 9.
43. 제네릭 제네릭은 한마디로 이야기하면 배열을 어떤형식으로 사용할지 미리 정해주는것이다. 프로그램에서 형변환은 자원을 많이 먹는 작업이다. 예를 들면 int > object > int 로 형변환을 차례로 한다고 치면 상당히 쓸모없는작업이 많아진다. 이전에 잠시 설명했지만 arrayList 에 인자를 추가하면 어떤값이든 object 로 변환해서 들어가진다. 그상태에서 사용할때는 해당형식으로 또 변환을 해줘야한다. 특별한 근거없이 생각해봐도 아무 쓸모없는행동이 많아진다. 가장기본적인 형식중 하나인 List 예제를 보자. List 변수 = new List(); 위와같이 지정하고 쓰기만 하면된다. 타입에는 내가 해당 List 에서 사용할 실제 타입을 넣어주면 된다. 예를들면 int , string, 개인이 만든클래스 , .. 2021. 10. 9.
42. 상속 상속은 쉽게 생각하면 진짜 말그대로의 의미이다. 부모클래스를 그대로 받아온다. 간단히 몇가지 형태를 알아보자. 그림0에 몇가지 기본형태에 대한 예제를 올려놨다. 일단 parent_class0 과 chile_class0 은 완전히 서로 다른 클래스이다. 다만 상속을 받아서 편의상 부모클래스와 자식 클래스라고 불렀으니 해당 단어에 너무 집착하지는 말고 예제를 보자. 기본적으로 생각하면 child_class0 은 parent_class0 을 상속 받았으니 자식클래스인 child_class0 에서는 부모클래스인 parent_class0 의 모든메서드(함수)를 사용가능하다. 위 내용을 기본으로 load 에서 객체로 만든 한줄씩 살펴보자. (load 는 프로그램이 시작되자마자 실행됨을뜻한다. 디자이너에 있는 For.. 2021. 10. 9.
41.arraylist / List / StringBuilder / 참조추가법 이제까지 배운내에서 배열은 꼭 필요하지만 상당히 불편한 존재였다. 아니 다른걸 배우지 않으면 불편하다고 느끼지 못했을지도 모르겠다. 기존의 배열은 항상 길이를 정해두거나 초기화 할때 값을 넣어줘야했다. 그런데 만약 값이 몇개가 들어갈지 모르는 상황이 온다면 어떻게 해야할까? 당연히 프로그램을 하다보면 그런상황이 수도없이 발생한다. 예를 들면 소수(1과 자신만을 약수로 가지는수) 의 개수를 1000이내에서 구하는 배열을 만들려면 길이를 몇개로 해야할까? 외우고 있는 사람아니면 보통사람은 알수 없다. 그래서 동적으로 할당할수 있는 배열이 있다. 다음예제를 보자. ArrayList myAL = new ArrayList(); myAL.Add("Hello"); myAL.Add(1); myAL.Add(false);.. 2021. 10. 9.
40.using/garbage collection 우리가 클래스 객체를 생성할때 new 를 사용하여 객체를 생성했다. 그런데 객체를 계속 생성하기만 하면 어떻게 될까 라고 생각해볼수 있다. pc의 메모리는 유한하기때문에 계속객체를 생성하기만 하면 메모리에 수많은 객체가 올라갈것이고 결국 피씨는 다운되거나 제기능을 할수 없을것이다. 그래서 c# 이나 자바에서는 가비지 컬렉션이라는 기능이 있다. 쉽게 생각하면 자동으로 사용하지않는객체를 없애주고 메모리를 청소해주는 기능이라고 생각하면된다. 이 가비지 컬렉션에 대해서는 인터넷에 찾아보면 다양한 의견들이 있고 이야기가 있는데 전체적으로 보면 임의로 호출하는데 상당히 부정적인것을 알수 있다. 결국 알아서 잘하니 임의로 가비지 컬렉션을 하지말고 놔두면 프로그램에 가장좋다고들 이야기한다. 그런데 개인적으로 얼마전 어.. 2021. 10. 9.
39.property(속성) 클래스의 맴버필드값을 직접적으로 접속해서 값을 바꾸고 값을 가져오고 하는 행위를 대신해주는 속성이라는것이 있다. 보통 클래스를 만들면 클래스의 맴버필드값에 따라 어떤 행위를 할지 정해주는 경우가 많은데 그렇게 하다보면 실수가 발생할수 있다. 아래 예제를 보자. 그림1과 같은 코드의 경우에 _dclass 의 _classcreatetime 값을 마음대로 변경해서 출력해버렸다. 최초 클래스 작성자의 의도는 그것이 아니었을텐데 이런경우 잘못된 행동을 한다고 할수 있다. 이런경우 그림2처럼 맴버필드는 private 으로 변경하고 속성은 get 만 놔둔다면 위와같은 문제는 발생하지 않을것이다. 이렇게 맴버필드를 숨기는걸 은닉화한다고 한다. 위와같은경우 속성대신 함수를 사용해도 충분히 같은 역할을 할수 있다. 나는 .. 2021. 10. 9.
38.const/enum/struct 여러값을 하나의 형태로 묶어서 사용하고 싶을때 사용할수 있는 enum 이라는 것이 있다. msdn에 찾아보면 다음과 같이 정의 되어있다. 열거형 형식은 명명 된 상수 집합을 선언 하는 고유한 값 형식 (값 형식)입니다. 상수는 우리가 배우지 않았는데 변수의 반대개념이라고 생각하면 된다. 한번 정의해 놓고 프로그램내에서 계속 사용할때 해당값을 변수에 담지 않고 상수로 선언해주고 사용할수 있다. 그림1에서 보면 상수와 변수의 차이를 알수 있다. c# 에서는 상수를 사용할때 const 나 readonly 를 사용할수 있는데 const는 컴파일 타임상수 이고 readonly 는 런타임 상수이다. 즉 const 는 처음 빌드할때 만들어져서 값이 변하지 않는채로 고정되고 고정할수도 없다. member_name1 을.. 2021. 10. 9.
37.DateTime,static 프로그램을 만들면서 상당히 자주 사용되는 형식과 컨트롤등을 몇가지 알아보고 넘어가자. DateTime 는 날짜 형식인데, 일반적인 변수처럼 사용하면 된다. 단, DateTime 은 클래스이기때문에 new 로 객체를 생성해서 사용해야한다. DateTime 변수를 하나 만들고 우클릭으로 정의로 이동해서 내용을 살펴보자. 내부에 들어가보면 수많은 생성자와 함수들이 있다. 그런데 함수중에 보면 static 이 붙은 함수들이 있다. 이함수들은 객체화 시키지 않아도 사용할수 있다는 의미이다. 그림1처럼 dt 라는 새로운 변수를 지정하고 new 로 새로운 객체를 만들었다. 그리고 dt.AddDays(10); 를 해주면 dt 의 기본값에 10일을 더해주게 된다. 이런형태가 기본적인 클래스를 객체로 만들고 객체에 속해있.. 2021. 10. 9.