【问题标题】:Method must declare a body?方法必须声明一个主体?
【发布时间】:2014-11-07 11:00:00
【问题描述】:

这是我的任务:

使用 以下指南:

您的乐器的数据字段应包括字符串数、 表示字符串名称的字符串名称数组(例如 E、A、D、G),以及 布尔字段来确定乐器是否已调谐,以及是否 乐器正在播放。欢迎您添加其他 数据字段,如果你喜欢。

设置已调整和当前正在播放的字段的构造方法 为假。其他方法

  1. 为乐器调音,
  2. 开始演奏乐器,然后
  3. 停止演奏乐器。

您认为合适的其他方法(添加至少一种独特的方法)。

使用图表工具(例如 PPT、Visio)创建 UML 类图 你的选择。准备图表并将它们放在 Word 文档中 以及对您的班级的简要说明。

为您的仪器创建一个 C# 类。确保您的代码匹配 包括您的设计规范和一些最小功能。 例如,如果你调用 violin.play() 方法,你应该在 至少打印小提琴正在演奏的字样。类似的功能应该 当您停止播放、调整或调用您的任何方法时提供。

到目前为止我的代码:

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


   namespace StringedMusInsApp
   {

   public class Guitarra
   {
   public static void Main (string[] args);

       //variable that stores the guitarra's name
    private String nameValue;
    //variable to store strings
    private int numberOfStringsValue;
    private char[] stringsValue = { 'E', 'A', 'D', 'G', 'B', 'E' };
    //field for tune of the guitar,
    private bool tunedValue;
    //field for playing of guitar
    private bool playingValue;
    //method to set tune and playing false.
    public Guitarra()
    {
        this.tunedValue = false;
        this.playingValue = false;
    }
    // gets and sets
    public String Name
    {
        get
        {
            return nameValue;
        }
        set
        {
            nameValue = value;
        }
    }
    public int NumberOfStrings
    {
        get
        {
            return numberOfStringsValue;
        }
        set
        {
            numberOfStringsValue = value;
        }
    }
    public void DisplayStringValues()
    {
        Console.WriteLine("String Values: ");
        for (int i = 0; i < stringsValue.Length; i++)
        {
            Console.Write(stringsValue[i] + " ");
        }
        Console.WriteLine();
    }

    public bool Tuned
    {
        get
        {
            return tunedValue;
        }
        set
        {
            tunedValue = value;
        }
    }
    public bool Playing
    {
        get
        {
            return playingValue;
        }
        set
        {
            playingValue = value;
        }
    }
    //Method to play the violin
    public void playGuitar()
    {
        Console.WriteLine("The guitar is now playing.");
        Playing = true;
    }
    //Method to sto playing the violin
    public void stopGuitar()
    {
        Console.WriteLine("The guitar has stopped playing.");
        Playing = false;
    }
    //Method to tune the Guitar
    public void tuneGuitar()
    {
        Console.WriteLine("The guitar is tuned.");
        Tuned = true;
    }
    //Method to stop tuning the Guitar
    public void stopTuneGuitar()
    {
        Console.WriteLine("The guitar has stopped tuning.");
        Tuned = false;
      }
     }
    }

但我收到此错误:

错误 1 ​​'StringedMusInsApp.Guitarra.Main(string[])' 必须声明一个主体,因为它没有标记为抽象、外部或部分。

【问题讨论】:

  • 那会是什么错误?
  • 错误 1 ​​'StringedMusInsApp.Guitarra.Main(string[])' 必须声明一个主体,因为它没有标记为抽象、外部或部分。
  • 时间敏感。明天之前我们不需要这样做。你做。你是在交作业的前一天尝试做作业的人。
  • 对不起,我确实在底部指定了我需要帮助,并且我需要它。我只在周末访问互联网,因为互联网在阿富汗是一种小商品,这是我一周内唯一一次。
  • 伙计们别再唠叨了,帮帮这家伙,我不知道编辑前的问题是什么样的,但这是他的第一个 C# 程序。您应该有主体方法的主体,删除“;”并添加括号。正如 David 所说,这是您的控制台应用程序的入口点。

标签: c# windows project


【解决方案1】:

错误信息准确地告诉你出了什么问题:

'StringedMusInsApp.Guitarra.Main(string[])' 必须声明一个主体,因为它没有标记为抽象、外部或部分。

查看Main(string[]) 的方法声明:

public static void Main (string[] args);

没有方法体。但由于它不是抽象、外部或部分方法,它需要一个方法体。定义一个:

public static void Main (string[] args)
{
    // do something here
}

还请注意,如果您Main(string[]) 方法中执行任何操作,那么您的应用程序不会执行任何操作。它只会立即打开和关闭,而无需执行任何代码。 Main(string[]) 方法是应用程序的入口点。

如果您将应用程序主机代码(入口点,Main(string[]),基本上是执行程序的东西)与逻辑代码(Guitarra 类,任何业务逻辑)分开,这可能会更容易构建与你正在做的事情有关,等等)。对于这么小的东西,没有必要将它们分解成自己的程序集或使用 DI 或类似的东西,但它们至少应该是它们自己的类。

【讨论】:

  • 我看到一些 C# microsoft 开发人员页面对此进行了描述,但我不知道我应该为这个应用程序放什么。我才刚刚开始,这是我的第一堂课,我迷路了。
  • @AbelX.Cruz:嗯,该方法是应用程序的入口点。所以当你运行它时,无论应用程序做什么,它都会去那里。像您这样定义一个类会创建逻辑,但它不会用该逻辑做任何事情。想想你定义为房子蓝图的类逻辑。它定义了房子,但它不是房子,直到有人真正执行那些蓝图。
  • 我在这个网站的某个地方读到了关于分离类的信息,但无论出于何种原因,我都无法获得示例或一些连贯的帮助,我无法理解我的无知感知。谢谢大卫,直到现在我得到的只是负面的玩笑或讽刺的言论。我来这个网站寻求帮助,我不明白贬低别人对别人有什么意义。
  • 我从来没有不尊重他人的意思,不耐烦的本性是与生俱来的,多年来从军队灌输。我也不知道我什么时候会失去联系,所以匆忙只是我在这里的一种状态。我从来没有打算对任何人无礼,我也没有记住你刚才提到的一切,我道歉。
  • @AbelX.Cruz 不用担心每个人都有一个艰难的开始。不要看负面的cmets和反对票。希望你继续使用 C#。祝你好运 :)。大卫很好的解释!
猜你喜欢
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
相关资源
最近更新 更多