2013-12-23 81 views
-3

這是一個控制檯程序靜態INT主要問題

場景:

我有很多功能在我的C#代碼,並設置爲公共和私人。當然我有static int Main(string args[])。在int Main我調用一些函數公共和私人,這是interpting函數,當我調試。它說如果主要是靜態所以所有的功能必須是靜態,但我的代碼功能公共和私人必須具有「那個」功能。如果我更改static int Main與我的,調試不能完成,因爲int Main必須是靜態的。

一是即時消息說給了非understable問題

如果真是如此混亂了解我的情況,請參閱我的示例代碼這裏

namespace Example 
{ 
    class Program 
    { 
     public class ClassInPublic 
     { 
      public int Num; 
      public string Sentence; 
     } 

     ClassInPublic DeclaringInstance = new ClassInPublic(); 

     private void Foo() 
     { 
      DeclaringInstance.Num = 35; 
      DeclaringInstance.Sentence = "Hello World"; 
      Console.Write("This Private Function! And Assign Variable Value From ClassInPublic Variable"); 
     } 

     private void Foo2() 
     { 
      Console.Write("This Single Foo didnt have any Instance Class"); 
     } 

     static int Main(string args[]) 
     { 
      Foo(); 
     } 
    } 
} 

這是我的情況下

而且隨着我真的很抱歉幫助別人我已經建立了這個

namespace Example 
{ 
    class Program 
    { 
     public static class ClassInPublic 
     { 
      public int Num; 
      public string Sentence; 
     } 

     ClassInPublic DeclaringInstance = new ClassInPublic(); 

     private static void Foo() 
     { 
      DeclaringInstance.Num = 35; 
      DeclaringInstance.Sentence = "Hello World"; 
      Console.Write("This Private Function! And Assign Variable Value From ClassInPublic Variable"); 
     } 

     private static void Foo2() 
     { 
      Console.Write("This Single Foo didnt have any Instance Class"); 
     } 

     public static int Main(string args[]) 
     { 
      Foo(); 
     } 
    } 
} 

錯誤的跡象是右下角現在,剩下的就是ClassInPublic

它說我不能宣佈

cannot declare instance members in static class 

五月有人幫助我克服這個?

+1

你需要了解什麼'static'手段。請參閱文檔。 – SLaks

+2

你的問題很不清楚。請顯示一些實際的代碼,並突出顯示錯誤報告的位置,以便我們瞭解問題。 –

+0

嗯,我很難解釋這個解決方案,因爲它更像是課堂問題。但是如果我可能會建議你養成寫靜態main的函數時永遠不要寫函數。只需創建一個類並定義所有功能,然後在main中調用該類對象。只是爲了好習慣。 –

回答

0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace Example 
{ 
    class Program 
    { 

     public void foo() 
     { 
      Console.WriteLine("This is foo in Class Program"); 
     } 

     static void fooStatic() 
     { 
      Console.WriteLine("This is Static foo"); 
     } 


     static void Main(string[] args) 
     { 
      Program fooInstance = new Program(); 

      fooStatic(); 
      fooInstance.foo(); 

     } 
    } 
} 

這是一個小例子。靜態函數是每個類一個。當你使用公共或私人功能時,每個實例都存在。

編輯:

以下是我認爲你正在嘗試做的:

namespace Example 
{ 
    class Program 
    { 
     public class ClassInPublic 
     { 
      static public int Num; 
      static public string Sentence; 
     } 

     ClassInPublic DeclaringInstance = new ClassInPublic(); 

     private static void Foo() 
     { 
      ClassInPublic.Num = 35; 
      ClassInPublic.Sentence = "Hello World"; 
      Console.WriteLine("This Private Function! And Assign Variable Value From ClassInPublic Variable"); 
     } 

     private static void Foo2() 
     { 
      Console.Write("This Single Foo didnt have any Instance Class\n"); 
     } 

     public static int Main(string[] args) 
     { 
      Foo(); 
      return 0; 
     } 
    } 
} 
+1

靜態函數可以有可訪問性修飾符,就像實例方法可以選擇忽略它們(並使用默認值)。 – Servy

+0

好吧,那麼什麼是Console.ReadKey(); ? – Geofff

+0

不需要Console.ReadKey() – SamFisher83