c# 확장 방법 - msdn
2558 단어 C#
확장 메서드 코드 작성:
namespace ExtensionMethods
{
public static class MyExtensions
{
public static int WordCount(this String str)
{
return str.Split(new char[] { ' ', '.', '?' },
StringSplitOptions.RemoveEmptyEntries).Length;
}
}
}
1. 정적 방법 필요
2. 첫 번째 파라미터는 어떤 유형에 확장 방법을 추가하는가(this 유형 이름 참조 이름)
호출 시 네임스페이스 가져오기
using ExtensionMethods;
호출 확장 방법과 호출 유형에서 실제 정의된 방법 사이에는 뚜렷한 차이가 없다.
string s = "Hello Extension Methods";
int i = s.WordCount();
주의: 코드에서 이 확장 방법을 실례적인 문법으로 호출할 수 있습니다.그러나 컴파일러가 생성한 중간 언어(IL)는 코드를 정적 방법에 대한 호출로 변환합니다.따라서 봉인 원칙을 제대로 위반한 것은 아니다.실제로 확장 방법은 확장된 형식의 개인 변수에 접근할 수 없습니다.
확장 방법을 사용하여 클래스나 인터페이스를 확장할 수 있지만 확장 방법을 다시 쓸 수 없습니다.인터페이스나 클래스 방법과 같은 이름과 서명을 가진 확장 방법은 영원히 호출되지 않습니다.컴파일할 때, 확장 방법의 우선순위는 항상 형식 자체에서 정의한 실례 방법보다 낮다.다시 말하면, 어떤 유형에Process (int i) 라는 방법이 있고, 같은 서명을 가진 확장 방법이 있다면, 컴파일러는 항상 이 실례 방법에 귀속된다.컴파일러가 방법을 호출할 때, 먼저 이 유형의 실례적인 방법에서 일치하는 방법을 찾는다.일치하는 방법을 찾지 못하면, 컴파일러는 이 유형에 정의된 확장 방법을 검색하고, 첫 번째 확장 방법에 연결합니다.
보통 부득이한 상황에서만 확장 방법을 실현하고 조심스럽게 실현하는 것을 권장한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.