2011-01-09 3 views
5

가의 WinForm 응용 프로그램에서 가정 우리는 program.cs에 있습니다 C#에서 변수의 별명을 지정할 수 있습니까?

static class Program 
{ 
    public static SomeClass someClass; 

    [STAThread] 
    static void Main() 
    { 
     //something 
    } 
} 

그래서 현재 프로젝트에서 다른 클래스에 someClass를 사용하는 우리가 Program.someClass

문제에 접근해야한다 우리가 예를 들어 같은 Program.someClass 별칭을 만들 수 있습니다 c1Program.someClass 대신 코드에 c1을 사용 하시겠습니까?

+0

아니요, 거기에 대한 참조를 보유하는 로컬 var을 만드는 것 외에는 없습니다. – BoltClock

+0

이 바로 개념은 반 직관적 인 IMHO입니다. 가능하다면 (참조 유형과 잠재적으로 여러 개의 별칭이 증상에 따라 달라지는 것과 관련하여 말하면서) 코드의 유지 관리가 더 어려워 질 수 있으며 사람들은 코드를 제대로 작성하지 못할 수 있습니다! 그것은 일종의 과잉 살상에 해당하는 메커니즘을 요구합니다. –

+1

무엇이 요점입니까? 당신은 어쨌든 그것을 손으로 모두 써서는 안됩니다. Intellisense를 사용하십시오. –

답변

6

그냥 손목 편의를 위해 별칭을 찾고 있다면, 다음과 같이 인라인 대리인으로 그것을 할 :

Func<SomeClass> c1 =() => Program.someClass; 

하지만 대부분의 경우 코드가 명확하지 않다는 데 동의합니다.

+1

@HPT :'c1()'은 당신에게 그 인스턴스를 반환 할 것입니다. 그래서'c1(). SomeClassMethod()'를 실행할 수 있습니다. – zerkms

+0

@zerkms : 당신 말이 맞습니다. 효과가있었습니다. –

+0

@HPT : 여전히 의존성입니다. 'AnotherClass'에서'c1' 인스턴스를 어떻게 가져 옵니까? 'c1'에 접근 할 수 있다면'Program.someClass'에 접근 할 수 있습니다. – zerkms

1

은 그냥 작업을해야하는 각 클래스에 해당 개체를 전달

+0

질문은 가능성에 관한 것입니다. 나는 그것이 유용하지 않다는 것을 안다. –

+2

@HPT : 프로그래머는 ** 실제 작업 **을 해결합니다. 객체를 전달하는 것이 좋습니다. 어떤 사람이 덜 정적 인 클래스를 사용하면 더 유연한 코드를 작성하면 세상이 나아질 것입니다. – zerkms

+0

+1 더 나은 접근 방식에 +1하지만 질문은 단지 내 호기심에 관한 것이었고 주요 문제를 삭제하여 해결하지 못하는 방법을 찾고 있습니다. D –

2

C/C++에서 매크로와 같은 것을 달성하고 "Program"을 명명 범위로 사용하고자한다고 가정하면 C#에서는 그렇게 할 수 없다고 생각합니다.

+0

그건 명백한 진실입니다. – mireazma

관련 문제