2015-05-28 74 views
-3

時,此代碼是從其他網站採取:爲什麼私有靜態方法是使用任務

using System; 
using System.Threading.Tasks; 
public class Program { 

    private static Int32 Sum(Int32 n) 
    { 
     Int32 sum = 0; 
     for (; n > 0; n--) 
     checked { sum += n; } 
     return sum; 
    } 

    public static void Main() { 
     Task<int32> t = new Task<int32>(n => Sum((Int32)n), 1000); 
     t.Start(); 
     t.Wait(); 

     // Get the result (the Result property internally calls Wait) 
     Console.WriteLine("The sum is: " + t.Result); // An Int32 value 
    } 
} 

我不明白,使用私有靜態方法的目的,而不是任何其他正常的公共方法。

感謝

+0

你說的是什麼方法? –

+0

private static Int32 Sum(Int32 n) – Tony

+1

因爲該方法僅適用於程序類,所以這就是爲什麼它的私有 – dansasu11

回答

5

,因爲它是從靜態上下文中使用的方法是靜態的,所以它不能被非靜態的。

該方法可能是私人的,因爲沒有理由將其公開。

2

這是因爲您的主要方法是static,您無法調用非靜態方法從static方法沒有作爲該類的對象作爲非靜態方法調用與對象。

如果讓數總和法非靜態,你將不得不調用它Program類的對象

private Int32 Sum(Int32 n) 
{ 
     //your code 
} 

呼叫會改爲

Task<Int32> t = new Task<Int32>(n => new Program().Sum((Int32)n), 1000); 
+2

*,並且您無法從靜態方法*調用非靜態方法?它應該是*你不能從靜態方法調用非靜態方法* **沒有對象引用** –

+0

謝謝@SriramSakthivel,你好。 – Adil

相關問題