2014-11-04 2 views
2

그래서 C# 프로그래밍에 익숙하지 않아 여기에서 아주 간단한 실수를 저지르고있을 것입니다. Visual Studio를 사용하여 콘솔 응용 프로그램을 만들고이 응용 프로그램에서 숫자의 제곱근을 찾으려고합니다. .NET Framework가 있습니다.
여기 이 내 프로그램의 상단입니다 :C# Math.Sqrt() not working

double distanceA = Math.Sqrt(totalA); 

내가 VS와 함께 프로그램을 구축 할 때, 그것이라고 나에게 이야기를 : 프로그램에서

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Linear 
{ 
    public static class Math 
    { 
     static void Main() 
     { 
      // program in here 
     } 
    } 
} 

,이 같은가는 선이 'Linear.Math'에는 'Sqrt'에 대한 정의가 없습니다. 왜 이런 말입니까? 'Sqrt'에 대한 정의를 어떻게 내릴 수 있습니까?

+2

** TL; DR **'System.Math.Sqrt (totalA); ' – Cyral

답변

24

당신이 당신의 클래스 Math 이름 때문에 당신이 당신의 자신의 클래스 (Linear.Math), 또는 .NET Math 클래스 (System.Math)를 참조하는 경우, Visual Studio 및 컴파일러 모르겠어요.

당신은 완전히 이것은 당신이 System.Math을 사용하고자하는 지정 이름 :

double distanceA = System.Math.Sqrt(totalA); 

자격으로 대신하여 .NETMath 클래스를 사용하고자하는 지정할 수 있습니다. 당신은 당신의 사용 지침 다음에 다음을 추가하여 전체 파일을 통해이를 사용할 수 있습니다

using Math = System.Math; 

이것은 using alias directive라고, MathSystem.Math을 의미 컴파일러 말할 것이다.

일반적으로 고유 한 클래스를 만들 때 충돌하는 이름을 사용하지 않는 것이 좋습니다.

+0

고마워! 이것은 완벽하게 작동했습니다! –

+2

@ColeZ. 이 답변으로 문제가 해결되면 솔루션으로 표시하십시오. – MichaelS