【问题标题】:Static int main issue静态 int 主要问题
【发布时间】:2014-01-11 22:51:27
【问题描述】:

这是一个控制台程序

场景:

我的 c# 代码中有很多函数,并且设置为 Public 和 Private。我当然有static int Main(string args[])。在int Main 中,我调用了一些函数Public 和Private,当我调试它时就会中断函数。它说如果 main 是 static 那么所有函数都必须是 static,但我在函数 Public 和 Private 中的代码必须具有“那个”函数。如果我用我的public int main 更改static int Main,则无法进行调试,因为int Main 必须是静态的。

首先我要说我真的很抱歉提出了一个难以理解的问题

如果这让我对我的场景感到困惑,请在此处查看我的示例代码

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

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您需要了解static 的含义。请参阅文档。
  • 你的问题很不清楚。请显示一些实际代码并突出显示错误报告的位置,以便我们了解问题。
  • 嗯,我很难解释这个解决方案,因为它更像是一个课堂问题。但是,如果我建议你养成一个习惯,那就是永远不要在编写静态 main 的地方编写函数。只需创建一个类并在那里定义所有功能,然后在 main 中调用该类对象。只是为了养成好习惯。
  • 你怎么会在课程范围之外拥有privatepublic? main 不能引用这些函数 - 它可以创建您的类的实例,并在其上调用公共函数。

标签: c# console-application main


【解决方案1】:
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;
      }
   }
}

【讨论】:

  • 静态函数可以有可访问性修饰符,就像实例方法可以选择省略它们(并使用默认值)。
  • 不需要 Console.ReadKey()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 2011-06-03
相关资源
最近更新 更多