2013-09-06 2 views
-2

개인 메서드를 정적으로 선언 할 때 이점은 무엇이며 언제 사용합니까?C# 개인 메서드를 정적으로

이유는 무엇 사용해야

private static string GetSomething() 
    { 
     return "Something"; 
    } 

대신 :

private string GetSomething() 
    { 
     return "Something"; 
    } 
+1

Google의 첫 번째 결과 : http://msdn.microsoft.com/en-us/library/98f28cdx.aspx 두 번째 결과 : http://msdn.microsoft.com/en-us/library/79b3xss3.aspx 세 번째 결과 : http://stackoverflow.com/questions/4124102/whats-a-static-method-in-c# – dtb

+0

문맥을 제공하는 것은 어떻습니까? 두 예제 모두 유효하며 시나리오에 따라 다릅니다. – DGibbs

+1

접근 자와 정적 수정자는 직교 개념이므로 'private'과 'static'사이에는 아무런 관련이 없습니다. –

답변

3

이 정적 메소드를 호출은 마이크로 소프트 중간에서 호출 명령어를 생성

를 무슨 말을 MSDN한다 언어 (MSIL)를 호출하는 반면 인스턴스 메서드 호출은 callvirt 명령을 생성합니다. null 객체 참조. 그러나 대부분의 경우이 둘의 성능 차이는 중요하지 않습니다.

더 간단한 단어는 성능 향상이 있음을 의미합니다.

3

이 메서드는 인스턴스 데이터를 사용하지 않는다고 다른 개발자에게 알리는 수단으로 private static 메서드를 선언 할 수 있습니다.

0

개인 정적이 중요성을 갖는 아래의 간단한 디자인을 고려하십시오.

당신은 일부 데이터 숨기기 (추상화)를 갖고 싶어하고, 클래스의 정적 및 비 정적 함수 모두에서 데이터를 사용하려면 :

public class test 
    { 
     private static int funcValue() 
     { 
      return 200; 
     } 
     public static void someStaticFunc() 
     { 
      int x = funcValue(); 
     } 
     public void anotherNonStaticFunc() 
     { 
      int y = funcValue(); 
     } 
    } 
:

예를 아래에 고려

전화 :

test t = new test(); 
test.someStaticFunc();//static 
t.anotherNonStaticFunc();//non-static 

위의 예에서를 선언하지 않으면정적 인 경우 이 아니며 정적 함수 someStaticFunc에서 호출하고 funcValue을 비공개 (추상화)하려고합니다.

관련 문제