2011-10-19 2 views
4

필자의 프로그램에서 복잡한 긴 유형의 행이 있습니다. 여기있다 :서브 클래스 화하지 않고 복합 유형에 대한 별명을 작성 하시겠습니까?

을 : 그래서처럼 서브 클래스

private static Dictionary<Type, List<FruitCallback<Fruit>>> callbacks = new Dictionary<Type, List<FruitCallback<Fruit>>>(); 

내가 그것을 별칭을 만들 수 있습니다 여기에

List<FruitCallback<Fruit>> 

코드의 라인은 단순히 너무 길고 혼란 곳의 예
class FruitCallbacks : List<SomeClass.FruitCallback<Fruit>> { } 

그러나 나는 빈 클래스가 필요하지 않을 수있는 이런 식으로 별칭을 지정하는 방법에 대해 어딘가에서 읽는 것을 기억할 수 있었다.

+0

최소한 입력을 저장하고 가독성을 높이려면 할당 왼쪽에 'var' 키워드를 사용할 수 있습니다. –

+0

그래, 내가 var 키워드를 알고 있지만 var 키워드를 사용할 수없는 여러 다른 장소를 반복해야합니다. –

+0

DarthVader의 대답은 사용자가 필요로하는 것임 – GianT971

답변

7

당신은 당신의 클래스에 완전한using 문을 추가 할 수 있습니다

using Foo = List<FruitCallback<Fruit>>; 

이 그럼 당신은 푸를 사용할 수

사방이 List<FruitCallback<Fruit>>이 예 사용해야 파일 (using 지시문 섹션에 있음)을 사용하여 클래스의 별명을 지정하십시오. 그것은 약간 장황하다.

using MyType = System.Collections.Generic.List<YourNamespace.FruitCallback<YourNamespace.Fruit>>; 

그리고 당신이 할 수있는 코드에서 List<FruitCallback<Fruit>> 대신에 MyType.

전체 작동 예제.

// aliased outside the namespace 
using MyList = System.Collections.Generic.List<Bar.FruitCallBack<Bar.Fruit>>; 

namespace Bar 
{ 
    // alternately, can be aliased inside the namespace 
    // using MyList = System.Collections.Generic.List<FruitCallBack<Fruit>>;   

    class Program 
    { 
     static void Main() 
     { 
      var myList = new MyList(); 
     } 
    } 

    public class FruitCallBack<T> { } 
    public class Fruit { } 
} 
3

당신은이 작업을 수행 할 수 있습니다

using System; 
using System.Collections.Generic; 
using Foo = List<FruitCallback<Fruit>>; 

class Program 
{ 
    static void Main() 
    { 
     Foo f = new Foo(); 
    } 
} 
+2

언급하는 바로는이 지시어를 using 지시문 옆에 추가해야합니다 (누군가가 클래스 내에서이 지시어를 사용하는지 전혀 알 수 없습니다). – GianT971

+2

또한 유형을 완전히 한정해야합니다. 앤서니의 대답을보십시오. –

+0

하, 내가 정확히 이것과 비슷한 것을 시도했지만 네임 스페이스 밖에 있기 때문에 컴파일되지 않을 것이다. 나는 수업 시간에 다시 시도해 보았지만 작동하지 않아서이 질문을했습니다. 분명히 그것은 네임 스페이스 안에 있어야하지만 클래스 안에서는 안됩니다. –

1

어쩌면 당신은 using 문을 통해 유형의 앨리어싱을 생각하고 있을까요?

관련 문제