2010-02-25 3 views
1

필자는 많은 기능 (100+ 추정치)을 갖고 있으며 그 이상의 절반은 정의 된 파일에만 필요합니다. 범위가 파일 수준이되도록 함수를 정의하는 방법이 있습니까?C#/.NET의 파일 수준에서 함수 범위?

+0

이 질문에 더 많은 정보를 추가 할 수 있습니까? 파일 수준에서 기능의 범위를 제한하는 방법이 명확하지 않습니다. 이러한 클래스 또는 부분 클래스 또는 다른 어떤 구조입니까? 제한의 목적은 무엇입니까? 필요없는 '파일'에 함수가있는 이유는 무엇입니까? 언제든지 '범위 내에있는'함수의 수를 줄이기 위해 100 개 이상의 함수를 작은 콜렉션으로 분리하는 코드를 리팩터링하는 것이 더 나을지도 모릅니다. – Lazarus

답변

2

첫째; C#은 함수가 아니라 메소드를가집니다. -p

메소드의 범위는 유형에 따라 다릅니다. 파일으로 제한하려는 경우이 파일이 여러 파일로 분할 된 부분 클래스 (또는 중첩 된 유형 집합)라고 가정 할 수 있습니까? 그렇지 않다면 (그리고 그것은 하나의 파일입니다) 메소드를 private으로 만듭니다. 현재 부분적일 경우, 아니오 : 동일한 유형의 서로 다른 파일 간의 상호 호출을 피할 방법이 없습니다. 부분 부분마다 중첩 된 정적 유형을 만들 수도 있지만,보기 흉하고 해킹하고 잘못되었습니다.

적극적으로 피해를주지 않는 경우 - 변경하지 않았습니까?

+0

@ 마르크, 다른 가능성은 OOP를 이해하지 못하기 때문에 OP가 _file_에 대해 이야기하고 있다는 것입니다. –

+0

예, 부분 클래스입니다. 나는 그가 두려워하게 될 코드 (그 개인적인 프로젝트와 멋있는 사이트)를 다른 누군가에게 유지시켜 주면 나는 단지 걱정된다고 생각한다. 코드를 읽는 동안이 아니라 변경을 수행하고 올바른 기능을 찾을 때가 아닐 수도 있습니다. –

2

아니요 하나의 "파일"에 대한 액세스를 제한 할 수있는 방법이 없습니다. 모든 기능을 하나의 클래스에 넣고 보호하려는 항목을 private으로 만들 수 있습니다. 또는 모든 기능을 다른 어셈블리에 넣고 보호되는 것을 internal으로 만들 수도 있습니다.

+0

어떻게 든 개인 클래스를 만들 수 있고'this' 포인터가 외부 클래스가 액세스 할 수있는 모든 것을 액세스 할 수 있다면 어떨까요? (아마도 아님) –

+0

내부 클래스는 외부 클래스의 개인 멤버에 액세스 할 수 있습니다. 그것은 또 다른 해결책입니다. 그것은 외부 클래스의 메소드를 private로 만드는 것만 큼 나만큼 달라 보이지 않습니다. –

+0

흠, 내부 클래스가 외부 클래스 * 정적 * 멤버에 액세스 할 수 있음을 알 수 있습니다. 하지만 '이'에 액세스 할 수있는 것처럼 보이지 않습니다. 이 doesnt는 그것이 내가 바라는 방식으로 작동하는 것 같습니다. 다른 기능이 할 수있는 모든 것을 액세스하려면. 함수를 내부 클래스에 복사/붙여 넣으면 많은 컴파일 오류가 발생합니다. 나는 그것이 왜 작동하지 않는지 이해하지만 그것이 효과가 있기를 바랬습니다. –

0

파일 레벨이 아닌 internal을 사용하여 범위를 어셈블리로 제한 할 수 있습니다.

관련 문제