728x90
구조
1. 네임 스페이스의 사용
using 디렉팅을 사용하는 것으로, 네임 스페이스의 멤버를 생략하여 사용할 수 있게 된다.
(C#의 네임 스페이스에 대해서는 이 블로그를 참조)
using System;
2. 네임 스페이스의 지정
namespace 네임스페이스
{
}
3. 클래스
[public|private|protected|internal] class 클래스명
{
}
4. 메소드
[public|private|protected|internal] [static] 리턴데이터형 메소드명([인수])
{
return;
}
5. Main 함수
.exe프로그램의 엔트리 포인트(; 컴퓨터 프로그램을 실행할 때에, 가장 처음에 실행되는 곳).
① Main은 static이여야한다.
② 리턴값은 void 혹은 int이다.
③ 인수는 커맨드라인 인수를 표시하고 있다.
static void Main(string[] args)
{
System.Console.WriteLine(args.Length);
}
데이터형과 변수, 정수
1. 데이터형
설명 | 데이터형 |
부호가 있는 정수 | sbyte, short, int, long |
부호가 없는 정수 | byte, ushort, unit, ulong |
Unicode 문자 | char |
IEEE 부동소수점 | float, double |
고정밀의 10진수 | decimal |
Bool값 | bool |
열거형 | enum E{...}형식의 유저 정의형 |
구조형 | struct S{...}형식의 유저 정의형 |
null 허용치 | null값을 가진 그 외의 모든 값의 데이터형의 확장자 |
그외 다른 모든 데이터형의 최종적인 기저 클래스 | object |
Unicode 문자열 | string |
class | C{...} 형식의 유저 정의형 |
인터페이스형 | interface | {...}형식의 유저 정의형 |
배열형 | 1차원 혹은 다차원, 예를 들어 int[] 및 int[,] |
델리케이트형 | delegate int D(...) 형식의 유저 정의형 |
2. 박스화와 박스화의 해제
일반 데이터형에 대해 아래의 코드를 적용하면, 오브젝트로 다룰 수 있다.
//박스화
int i = 1;
object o = i;
//박스화의 해제
int j = (int)o;
3. 로컬 정수
const 데이터형 정수명 = 값;
배열
int[] a1 = new int[10];
int[,] a2 = new int[10, 5];
int[,,] a3 = new int[10, 5, 2];
int[] a = new int[] {1, 2, 3};
식
설명 | 연산자 |
동일한 | == |
동일하지 않은 | != |
조건AND | && |
조건OR | || |
문법
1. if
if ()
{
}
else if ()
{
}
else
{
}
2. switch
int n = 1;
switch (n)
{
case 값:
break;
default:
break;
}
3. while
while ()
{
}
※ break, continue
do
{
} while();
## for
```csharp
for (초기화; 조건식; 변화식)
{
}
4. foreach
foreach (오브젝트 in 변수)
{
}
5. goto
loop:
System.Console.WriteLine(1);
if (true)
goto loop;
6. 예외
try
{
}
catch ()
{
}
finally
{
}
클래스와 오브젝트
1. 인스턴스화
Test t = new Test();
2. 접근 한정자
한정자 | 설명 |
public | 액세스 제한 없음 |
protected | 이 클래스 혹은 파생된 클래스에 제한 |
internal | 이 프로그램에 한정 |
private | 이 클래스에 한정 |
3. 계승
public class Parent
{
}
public class child : Parent
{
}
※ 오버라이트된 기저클래스의 멤버를 호출할 때는 "base" 키워드를 사용한다.
4. 읽기 전용 필드
"readonly"를 붙인다.
5. this
인스턴스화된 오브젝트 자신.
6. 추상 메소드
public abstruct class Chusho
{
public abstruct int Test();
}
public class Jisso : Chusho
{
public override int Test() {
}
}
7. 메소드의 오버로드
같은 메소드명임에도, 인수가 다르면 몇 개라도 정의가능하다.
8. 생성자
클래스명과 동일한 이름의 메소드명으로 선언.
public class Hoge
{
public void Hoge(int i)
{
}
}
9. 프로퍼티
Java의 Setter, Getter과 동일하다.
1) 정의예
접근한정자 데이터형 속성명
{
set
{
return field;
}
get
{
field = value;
}
}
2) 사용예
Test test = new Test();
test.propName = "hoge";
string hoge = test.propName;
10. 인터페이스
interface Hoge
{
void test1();
}
interface Fuga
{
void test2();
}
public class Bar : Hoge, Fuga
{
public void test1()
{
}
public void test2()
{
}
}
11. 델리케이트
메소드의 리턴값이나 인수의 정의만을 미리 해두고, 나중에 셋팅하는 방법.
delegate 리턴값 DelegateName([인수]);
DelegateName 변수 = 실체가되는함수([인수]);
12. 제네릭
메소드나 속성으로 사용하는 데이터형을 파라미터로써 정의하고, 사용할 때에 결정하는 기능.
오버로드의 확장 등을 간단히 하거나, 동적인 사이즈의 List나 Dictionary도 제네릭을 사용하여, 사용할 수 있다.
1) 제네릭클래스 정의
class ClassName<T>
{
}
2) 제네렉클래스 메소드의 정의
접근한정자 데이터형 메소드명<T> ([인수])
{
}
※ 예시
class Test<T>
{
private T val;
public void Save(T val)
{
this.val = val;
}
public T Load() {
return this.val;
}
}
・・・
Test<int> testObj = new Test<int>();
test.Save(1);
참고자료
728x90
'IT > 언어' 카테고리의 다른 글
[C#] C#의 Delegate (0) | 2021.03.14 |
---|---|
[C#] C#의 Dictionary (사전형) 데이터 사용법 (0) | 2021.03.06 |
[python] python 디버깅할 때 print가 아닌, Icecream을 사용하면 편리 (0) | 2021.01.28 |
[JavaScript] Object.assign에 대한 이해 (0) | 2020.11.27 |
[JavaScript] JavaScript 쇼트 코딩 테크닉(1) (0) | 2020.11.19 |