2013-12-23 67 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