2014-01-08 17 views
1

의 의미 이해 : 나의 이해에서나는 다음과 같은 코드를 이해하기 위해 노력하고있어이 C# 코드

flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer 
    { 
    DataStore = new FileDataStore("Tasks.ASP.NET.Sample.Store"), 
    ClientSecretsStream = stream, 
    Scopes = new[] { TasksService.Scope.TasksReadonly } 
    }); 

사이의 코드를 첫 번째와 마지막 {...} 익명 함수의 본문입니다 . 새 FileDataStore는 FileDataStore의 새 인스턴스를 만듭니다. 내가 이해할 수없는 것은 그것이 끝나는 쉼표가 무엇을 의미하는지에 대한 것입니다. 그 뒤의 두 행에는 쉼표가 끝에 있습니다. 어떤 종류의 구조가 C#에서 호출됩니까? 나는 그것에 익숙하지 않다.

+6

[* Object initializer *] (http://msdn.microsoft.com/en-us/library/bb384062.aspx) –

답변

10

아니요, 익명 기능의 본문이 아닙니다. 초기화 목록 ..이며 새 개체 유형 인 GoogleAuthorizationCodeFlow.Initializer의 필드를 모두 직렬로 설정합니다.

var initializer = new GoogleAuthorizationCodeFlow.Initializer(); 
initializer.DataStore = new FileDataStore("Tasks.ASP.NET.Sample.Store"); 
initializer.ClientSecretsStream = stream; 
initializer.Scopes = new[] { TasksService.Scope.TasksReadonly }; 

flow = new GoogleAuthorizationCodeFlow(initializer); 

기능적 등가 :이의 "인 - 라인"버전

. 그것은 단지 더 조밀하다.

+0

위에서 작성한 내용은 내가 더 익숙한 것입니다. 어떤 버전의 C#이 인라인으로 도입 되었습니까? 어떤 생각? 나는 이전 버전에있는 것을 상기하지 않습니다. 나는 더 긴 방법을 실제로 좋아한다. 더 쉬운 눈 :-) – AndroidDev

+0

@AndroidDev 개체 및 컬렉션 이니셜 라이저는 [C# 3.0] (http://msdn.microsoft.com/en-us/library/bb308966.aspx) (2007 년 3 월)에 도입되었습니다. –

4

이것은 생성자 이니셜 라이저입니다. 코드에서 새 GoogleAuthorizationCodeFlow.Initializer 개체를 만들고 개체에 DataStore, ClientSecretsStreamScopes 속성을 설정하고 있습니다.

그러면이 매개 변수가 인수로 GoogleAuthorizationCodeFlow 생성자에 전달됩니다.

0

클래스 샘플이 있습니다.

var sample = new Sample {id = 1, key = "one"}; 

그럼 인수로이 sample을 통과

public class Sample() 
{ 
    public string id { get; set; } 
    public int key { get; set; } 
} 

이 초기화 될 수있다.

예제에서 매개 변수와 동일한 작업을 수행했습니다. 이것을 클래스 이니셜 라이저라고합니다.

희망이 있습니다.

+0

이것은 생성자에서 매개 변수를 가질 수있는 클래스 생성자와 동일한 것입니까? – AndroidDev

+0

예에서'GoogleAuthorizationCodeFlow' 생성자는'GoogleAuthorizationCodeFlow.Initializer' 객체/클래스의 인스턴스를 필요로합니다. 'GoogleAuthorizationCodeFlow.Initializer'에는 매개 변수가없는 생성자가 있습니다. 코드 스 니펫은 클래스 이니셜 라이저를 사용하여 클래스 인스턴스를 생성하고이를 매개 변수로 전달합니다. 희망은 지금 분명했습니다. – Sandy