2011-03-31 7 views
3

가능한 중복이 키워드를 사용합니다 :
What does “this” mean in a static method declaration?언제 함수 인수로

내가 가서 코드를 통해를이 키워드는 함수 인수로 사용됩니다 발견했다. 그들이 때 내가 더 잘 이해할 수있는 결과로 작은 코드 샘플 함수 인수로이 키워드를 사용하는 상황을 설명하시기 바랍니다 AddCell(Table table, object cell)

처럼 쓸 수

public static void AddCell(this Table table, object cell) 

AddCell는 이유 this 키워드

처럼 코드 조각이다 . 감사.

답변

1

이 구문은 확장 방법에 사용됩니다.

이들은 처음에는 글을 쓰는 것을 보았을 때 약간 이상해 보였지만 멋진 것들입니다. 대부분의 Linq는 확장 방법으로 작성되었습니다.

여기 좋은 소개 튜토리얼입니다 - http://csharp.net-tutorials.com/csharp-3.0/extension-methods/ - 예제를 포함 : 전화를 할 수 있습니다

public static class MyExtensionMethods 
{ 
    public static bool IsNumeric(this string s) 
    { 
     float output; 
     return float.TryParse(s, out output); 
    } 
} 

:

"fred".IsNumeric() 
1

thisextension methods을 생성하기위한 키워드입니다.

이 방법을 사용하면 Table 구현을 변경하지 않았지만 Table 멤버의 메서드 AddCell을 호출 할 수 있습니다.

MSDN은 :

확장 방법은 당신이 새로운 파생 형, 재 컴파일, 또는 다른 원래의 형식을 수정을 만드는 없이 기존의 유형 방법을 "추가"할 수 있습니다. 확장 메서드 은 특별한 종류의 정적 메서드 인 이지만 확장 형식의 인스턴스 메서드 인 인 것처럼 호출됩니다. C# 및 Visual Basic으로 작성된 클라이언트 코드의 경우 확장 메서드 호출과 실제로 형식에서 정의 된 메서드 사이에 명백한 차이가 없습니다.

1

이것은 extension method입니다. 요점은 물론

MyStaticClass.AddCell(table, cell); 

로 당신은 지금 당신이 using 에드했습니다 MyStaticClass 현재 네임 스페이스 또는 네임 스페이스에있는 가정

table.AddCell(cell); 

를 호출 할 수 있다는 것입니다.

1

'this'키워드는 확장 방법을 만드는 데 사용됩니다. 예를 들어, 파생 된 새 유형을 상속하지 않고 메서드를 추가하려는 라이브러리 클래스를 사용하는 경우 정적 확장 메서드를 만들 수 있습니다. 이미 알려진 유형에 규칙적인 정적 메소드를 배치하는 구문 - 설탕입니다. 예를 들어

:

public static int ToNumber(this string numberString) 
{ 
    int convertedInt = 0; 
    // logic goes here to convert to an int 
    return convertedInt; 
} 

는 다음과 같이 호출 가능

string myNumberString = "5"; 
int num = myNumberString.ToNumber(); 

당신은이 작업을 수행 할 수있는 상속 클래스를 만들 필요가 없습니다 않았다하지만 깨끗하게 읽습니다.

2

기본적으로 무엇을 귀하의 예제에서 정의되고있는 것은 확장 방법이다. 정적 메소드에서 this 키워드를 사용하여 첫 번째 인수를 정의하면 첫 번째 인수에 정의 된 유형의 인스턴스 객체에서 메소드를 호출 할 수 있습니다. 예에서

당신이 이런 식으로 뭔가 할 수있을 것이라고 말했다 :

Table someTableInstance; /// must be instanciated somehow; 
someTableInstance.AddCell(cell); // Call the AddCell method as if it was an instance method. 

, 그것은 도움이 감사합니다 희망을, 브루노

관련 문제