일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 동일 프로세스
- CSS
- v-text-field height
- 프로세스 방지
- error
- f035d
- bucket cors
- vuetifyjs
- xlsx
- vuejs
- electron-nuxt
- Vuetify
- naver storage
- Electron
- naver storage bucket error
- JavaScript
- sort
- sequelize
- 동일 프로그램
- bucket max-key
- onsen-ui
- nodejs
- Android
- v-select
- MySQL
- NUXT
- kotlin
- onsenui
- c#
- Vue
- Today
- Total
앙큼한 개발기록
[C#] partial class 정리 본문
회사에서 다른 사람이 만든 프로젝트를 수정하던 중
메인 폼의 partial class 를 다른 디자인 cs 파일로 만들어 정의해 놓은 것을 보고
이걸 이렇게 써도 되나.... 라는 생각이 들어 찾아보니
딱히 이걸 어떻게 쓰라는 말이 있지는 않아 정리를 좀 해보자 글을 작성한다.
(사실 그렇게 쓰면 안된다...그리고 파일 네이밍도 안맞고..)
공식 사이트 에서는 다음과 같이 정의한다.
[partial은 클래스, 구조체, 인터페이스 또는 메서드의 정의를 둘 이상의 소스 파일에 분할할 수 있다.]
이말인 즉 사실 class 말고도 struct, interface, function 도 가능하다는 말이다.
하지만 우리는 보통 class로 많이 사용하고,
c#에서도 폼을 만들면 partial class로
하나는 개발자가 수정하도록, 함수나 이벤트를 핸들링 하고
다른 하나는 리소스를 정의하고 화면에서 조작되는 값을 나타내는 클래스로
나누어서 작업할 수 있도록 편의성을 제공해 준다.
또한
[각 소스 파일에는 형식 또는 메서드 정의 섹션이 있으며 모든 부분은 애플리케이션이 컴파일될 때 결합됩니다.]
이는 partial 로 정의된 애들은 컴파일 될때 결합하므로 컴파일 되기 전에는 사용이 불가능하다는 소리 이다.
즉 외부에서 호출해서 사용 못한다.
Partial 클래스 및 메서드 - C# 프로그래밍 가이드
C#의 Partial 클래스 및 메서드는 클래스, 구조체, 인터페이스 또는 메서드의 정의를 둘 이상의 소스 파일에 분할할 수 있습니다.
learn.microsoft.com
partial 은 다음과 같은 경우에 사용된다.
1. 다수의 개발자가 하나의 class, struct, interface를 작업하는 경우
2. 프로젝트의 규모가 큰 경우
3. 사용상의 구분 (디자인, 이벤트, 선언, 기타 등등)
partial 사용시 주의사항
1. 선언과 정의의 타입이 일치해야 된다.
- 이름이 당연히 같아야 된다. partial로 해놓고 일반 public으로는 안된다.
2. method의 return type는 void만 가능
- 아직 컴파일이 되지 않은 상태이기 때문에 void로 통일
3. 접근은 오직 partial로만
- 이것도 마찬가지로 컴파일
공식 문서 예시
public partial class Coords
{
private int x;
private int y;
public Coords(int x, int y)
{
this.x = x;
this.y = y;
}
}
public partial class Coords
{
public void PrintCoords()
{
Console.WriteLine("Coords: {0},{1}", x, y);
}
}
class TestCoords
{
static void Main()
{
Coords myCoords = new Coords(10, 15);
myCoords.PrintCoords();
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
// Output: Coords: 10,15
그리고 partial class 파일을 나누는 경우
naming은 제발 [이름][기능이나 목적].cs 로 하면 좋겟다.
ex ) MainForm.cs, MainForm.Socket.cs, MainForm.Message.cs, MainForm.Text.cs 등등...
ps. Microsoft .net 공식문서 되게 친절하네.
'개발 > visualBasic' 카테고리의 다른 글
C# const , readonly 설명 (0) | 2018.01.18 |
---|---|
C# for foreach 문 (0) | 2018.01.16 |