2017-02-17 1 views
0

이것은 어리석은 질문 일 수도 있습니다. 그러나 기본 매개 변수와 같은 것이 있지만 값이 아닌 이름이 있는지 궁금합니다.이름으로 C# 기본 매개 변수가 가능합니까?

예 :

내 방법을 많이 매개 변수 "IWebDriver 드라이버"를 사용해야합니다. 그리고 나는 그것을 항상 사용할 때 "드라이버"라는 이름을 사용한다는 것을 알고 있습니다. 이름 뒤의 "객체"는 다를 수 있지만 (IE, FF, Chrome ..) 이름은 항상 동일합니다.

그래서 함수를

public void CheckName(string nameToCheck, string expectedValue, IWebDriver driver = driver with name "driver") 
{ 
    some code.... 
} 

하려면이 가능하다 그리고 내가 그것을 사용할 때하지 말아야 할 :

CheckName("MyName", "MyName", driver) 

할 것이 아니라 :

CheckName("MyName", "MyName") 

... 그리고 메소드는 name (string) "driver"를 가진 객체를 가져와야한다는 것을 알고있다. 나는 기본이 아닌 다른 이름을 사용하려면

단지를 지정하려면 :

CheckName("MyName", "MyName", driverOtherName) 
+0

과부하 잔뜩 추가 할 수 있습니까? –

+0

명시 적으로 전달하지 않으려는 경우 메서드에서 드라이버 개체를 가져옵니다. 더 많은 정보를 제공 할 수 있습니까? –

+0

귀하의 질문을 바로 이해하는 경우 귀하의 (선택적) 매개 변수 값을 저장하는 변수의 이름을 확인하고자합니다. 그리고 불가능합니다. 변수 이름 (반드시)은 코드에 아무런 의미가 없으며 무엇이든 될 수 있습니다. –

답변

2

아니, 그 일의 방법이 없습니다. 기본 매개 변수는 상수 값을 가져야하며 로컬 변수에서 가져온 값에 의존 할 수 없습니다. 당신은 아마 필드에서 드라이버 참조를 저장 인스턴스를 생성한다처럼

그것은 소리, 당신은 단지 해당 인스턴스에 메서드를 호출 할 수 있으며 필드에서 값을 사용할 수 있습니다 : 다음

public class FooChecker 
{ 
    private readonly IWebDriver driver; 

    public FooChecker(IWebDriver driver) 
    { 
     this.driver = driver; 
    } 

    public void CheckName(string nameToCheck, string expectedValue) 
    { 
     // Use driver here 
    } 
} 

당신은 사용할 수 있습니다 :

var checker = new FooChecker(driver); 
checker.CheckName("MyName", "MyName"); 
checker.CheckName("MyName2", "MyName2"); 
+0

글쎄, 당신은 쉽게'null = null '을 기본 매개 변수로 사용할 수 있으며'driver = driver ?? 메서드 내에서 myLocalVariable을 반환합니다. 그러나 나는 이것이 OP 질문이 아니라고 생각합니다. –

+0

@lukegv Jon은 상수 값을 의미합니다. – EpicKip

+0

클래스 FooChecker (드라이버)가 Test라는 이름의 Nuget 패키지에 포함되기를 원한다면? "Test.FooChecker (드라이버)를 사용하여"쓸 수 있습니까? – Stanislava

관련 문제