2013-03-17 3 views
2

저는 C#을 처음 사용 했으므로 여기에 대한 정보는 찾을 수 없습니다.네임 스페이스와 클래스 선언

네임 스페이스의 클래스를 선언해야합니까?

using System; 
public class myprogram 
{ 
    void main() 
    { 
     // The console class does not have to be declared? 
     Console.WriteLine("Hello World"); 
    } 
} 

나는 내가

class mathstuff 
{ 
    private int numberone = 2; 
    private int numbertwo = 3; 
    public int addhere() 
    { 
     return numberone + numbertwo; 
    } 


using System; 
public class myprogram 
{ 
    void main() 
    { 
     // the class here needs to be declared. 
     mathstuff mymath = new mathstuff(); 
     Console.WriteLine(mymath.addhere()); 
    } 
} 

내가 올바르게 이해하고 있습니까 클래스를 선언하는 다음 네임 스페이스를 사용하지 않는 경우?

+0

[여기] (http://msdn.microsoft.com/en-us/library/z2kcy19k(v=80) .aspx)에 대한 설명이 더 나을 수 있습니다. 한 가지 기억해야 할 것은 네임 스페이스를 선언하지 않으면 전역 네임 스페이스가 자동으로 선언된다는 것입니다. –

+0

제공하는 두 가지 코드 예제 중 하나에서 네임 스페이스에 대한 언급이 보이지 않습니다. 정적 클래스와 비 정적 클래스의 차이점을 실제로 언급하지 않습니까? – levelnis

+0

"선언 됨"이란 단어가 의미하는 바를 의미하지 않는다고 생각합니다."선언 된"무엇을 의미한다고 생각하십니까? –

답변

4

"네임 스페이스가없는 클래스를 선언 할 수 있습니까?" 가능합니다. global 네임 스페이스라고합니다.

class BaseClass 
{ 
} 

class SubClass : global::BaseClass 
{ 
} 

그러나,이 매우 나쁜 관행이고, 당신은 결코 프로덕션 응용 프로그램에서이 작업을 수행해야합니다.

4

네임 스페이스는 클래스가 어떤 컨텍스트에서 살고 있는지 명확히하는 한 가지 방법 일뿐입니다. 자신의 이름 인 Ralph를 생각해보십시오. 우리는이 세상에 많은 랄프가 있지만 그 중 하나가 바로 당신입니다. 모호성을 없애기위한 추가 방법은 성을 추가하는 것입니다. 그래서 만약 우리가 2 마리의 랄프가 있다면, 우리는 당신에 대해 더 큰 이야기를 할 수 있습니다.

클래스에 대해서도 동일합니다. AClass 클래스를 정의하고 다른 클래스를 정의해야 할 경우 AClass 두 클래스를 구별 할 방법이 없습니다. 네임 스페이스는 '성'입니다. 클래스를 가졌지 만 동일한 이름으로 두 개의 다른 클래스를 구별 할 수있는 방법.

질문에 대답하기 위해 "신고하지 않아도됩니다."와는 아무런 관련이 없습니다. 코드를 작성하는 것이 더 쉬울 것입니다. 예를 들어

:

using System; 

public class myprogram 
{ 
    void main() 
    { 
     // the class here needs to be declared. 
     Console.WriteLine("blah"); 
    } 
} 

using System; 당신이 Console의 네임 스페이스를 선언하지 않기 때문에. System 네임 스페이스에있는 Console 하나만 사용할 수 있습니다. using System; 네임 스페이스를 선언하지 않으려면 Console을 찾을 수 있어야합니다. 이렇게 MSDN에서

System.Console.WriteLine("blah"); 

은 :

네임 스페이스 키워드는 범위를 선언하는 데 사용됩니다. 이 네임 스페이스 범위를 사용하면 코드를 구성하고 전역 고유 형식을 만드는 방법을 제공 할 수 있습니다.

더 많은 정보 MSDN for namespace을 확인합니다.

+1

저는 실제로 개발자가 자신의 이름을 사용하는 것을 보았습니다. 'Ralph'는 C# 클래스의 네임 스페이스입니다. –

+0

답변 해 주셔서 감사합니다. Writeline은 Console 클래스 내에서 메소드가 아닌가? 그러나 콘솔을 사용하기 위해 선언 할 필요는 없습니다. 또는 Console이 System 내의 클래스가 아닌가? – Ralph

+0

@Ralph, 네, System 네임 스페이스의 정적 클래스입니다. 따라서 그것이 의미하는 것이면 인스턴스화하지 않고 사용할 수 있습니다. – bas

관련 문제