Value Type vs Reference Type

구분 값 형식(Value Type) 참조 형식(Reference Type)
종류 내장형 (int, char, float,…)

사용자 정의형 (enum, stuct)

Object, string, class, interface, delegate, ..
메모리 사용 스택 스택, 힙
대입(Assignment) 복사 참조 변경
크기 고정 가변
Garbage Collector 지원 지원 안됨 지원 됨

값형식(Value Type)은 메모리를 직접 가리킨다. 참조형식(Reference Type)은 메모리를 참조를 통해서 가리킨다.
값형식(Value Type)은 변수의 선언과 동시에 메모리에 생성한다. 참조형식(Reference Type)은 변수의 선언과 메모리 생성 분리하여 생성한다.
값형식(Value Type)은 값형식끼리 할당 할 때 메모리의 값들을 그대로 복사한다. 참조형식(Reference Type)은 참조형식끼리 할당 할때 참조값만을 복사한다.
http://dis.dankook.ac.kr/lectures/hci10/entry/Value-Type과-Reference-Type의-비교

Data Type

Boolean (bool)

Character (char)

Enumeration (enum)

Numeric (int, long, float, double, decimal, etc)

String

Object

Struct

ArrayTest

StructTest

 

.Net Namespace

using System;

namespace ConsoleApplication1
{
  namespace A
{
class MyClass
{
int value = 1;
public void MyMethod() { System.Console.WriteLine(value); }
}
}
  namespace B
{
class MyClass
{
double value = 2.1;
public void MyMethod() { System.Console.WriteLine(value); }
}
}

class Program
{
static void Main(string[] args)
{

        A.MyClass a = new A.MyClass();
a.MyMethod(); // 1 출력
        B.MyClass b = new B.MyClass();
b.MyMethod(); // 2.1 출력
}
}
}

namespace SampleNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine(
“SampleMethod inside SampleNamespace”);
}
}

// Create a nested namespace, and define another class.
namespace NestedNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine(
“SampleMethod inside NestedNamespace”);
}
}
}

class Program
{
static void Main(string[] args)
{
// Displays “SampleMethod inside SampleNamespace.”
SampleClass outer = new SampleClass();
outer.SampleMethod();

// Displays “SampleMethod inside SampleNamespace.”
SampleNamespace.SampleClass outer2 = new SampleNamespace.SampleClass();
outer2.SampleMethod();

// Displays “SampleMethod inside NestedNamespace.”
NestedNamespace.SampleClass inner = new NestedNamespace.SampleClass();
inner.SampleMethod();
}
}
}

 

Main

http://msdn.microsoft.com/ko-kr/library/acy3edy3(v=vs.100).aspx

– Main 메서드는 프로그램 제어가 시작되고 끝나는 .exe 프로그램의 진입점입니다.

 

– Main은 클래스 또는 구조체 내부에 선언됩니다.Main은 static이어야 하며 public이 아니어야 합니다.이전 예제에서 이 메서드에는 기본 액세스 수준인 private이 지정되었습니다. 이 메서드의 바깥쪽 클래스나 구조체는 정적일 필요가 없습니다.

 

– Main은 void 또는 int 반환 형식일 수 있습니다.

 

– Main 메서드는 명령줄 인수를 포함하는 string[] 매개 변수가 있거나 없는 상태로 선언할 수 있습니다.Visual Studio를 사용하여 Windows Forms 응용 프로그램을 만드는 경우 수동으로 매개 변수를 추가하거나 Environment 클래스를 사용하여 명령줄 인수를 가져올 수 있습니다.매개 변수는 명령줄 인수(0부터 시작)로 읽습니다. C 및 C++와 달리 프로그램의 이름은 첫 번째 명령줄 인수로 취급되지 않습니다.

 

class Program
{
static void Main(string[] args)
{
// Display the number of command line arguments:
System.Console.WriteLine(args.Length);
}
}

C# Console Program

C# Console Application Using VS.NET 2010

http://dis.dankook.ac.kr/lectures/hci13/2013/09/04/vc-console-application-using-vsnet-2010/

C# Console Application Using Notepad

http://dis.dankook.ac.kr/lectures/hci13/2013/09/04/c-console-program-using-notepad/

C# MessageBox in a Windows Console Application

http://dis.dankook.ac.kr/lectures/hci13/2013/09/04/c-messagebox-in-a-windows-console-program/

 

C# How to keep the Console Window open in debug mode

http://dis.dankook.ac.kr/lectures/hci13/page/10/

 

 

.Net namespace

namespace (MSDN)
http://msdn.microsoft.com/ko-kr/library/0d941h9d(v=vs.100).aspx

namespace (C# Study)
http://csharpstudy.com/CSharp/CSharp-namespace.aspx

namespace (Hoons.net)
http://www.hoons.kr/Lecture/LectureMain.aspx?BoardIdx=43000&kind=53&view=0

namespace (Winapi)
http://www.winapi.co.kr/dotnet/book/2-3-1.htm

 

네임스페이스

설명

System

타입, 메모리 관리 등 핵심 클래스들

System.Collections

배열, 연결 리스트 등의 컬렉션 클래스

System.IO

파일 입출력 및 네트워크 관련 클래스

System.Windows.Forms

윈도우즈 폼과 컨트롤

System.Drawing

GDI+

System.Web

웹 개발에 관련된 클래스

System.Xml

XML 관련 클래스들

System.Security

보안, 암호, 권한 관련 클래스

.Net Framework

MSDN .Net Framework 소개
http://msdn.microsoft.com/ko-kr/library/z1zx9t92.aspx

사용자 삽입 이미지
.Net Framework의 핵심 요소: CLR, FCL, .NET 언어
-CLR(Common Language Runtime)은 .Net Framework의 핵심 중의 핵심으로 코드를 실행하고 메모리를 자동 관리하며 형식의 안정성을 보장하는 등 여러 가지 실행시간 서비스(환경)를 제공합니다.

-FCL(Framework Class Libraries)은 .Net이 제공하는 여러 가지(보안, BCL, DB, Web, GUI, …) 클래스 라이브러리입니다.

-.NET 언어 간의 상호운용성을 위해 CTS(Common Type System)는 .Net의 모든 데이터 형식이 기술되어 있으며 런타임 프로그래밍 구조가 정의되어 있습니다. CLS(Common Language Specification)는 .Net의 모든 언어가 지켜야 하는 형식에 대한 일련의 규약으로 CLS 규약을 지켜 만들어진 형식은 어떤 .Net 언어에서도 사용할 수 있다는 것을 말한다.