【问题标题】:Program * does not contain a static 'Main' method suitable for an entry point* with code程序 * 不包含适用于带有代码的入口点 * 的静态“Main”方法
【发布时间】:2018-06-13 10:09:04
【问题描述】:

我已经完成了编写一个程序的作业,该程序由 2 个单独的项目组成,包含正方形、矩形和平行六面体的类,并且能够计算它们的面积。我认为我已正确完成所有操作并连接了项目,但是当我尝试编译代码时,我不断收到此错误消息:

Program * 不包含适用于入口点的静态“Main”方法。

我的两个项目都有静态 Main 方法。

第一个项目

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

namespace zad8
{
    public abstract class CFormulas
    {
        abstract public double S();
        abstract public double P();
        abstract public double SF();
        abstract public double V();
    }
    public class CSquare : CFormulas
    {
        double a { get; set; }
        public CSquare(double a)
        { this.a = a; }
        public override double S() { return a * a; }
        public override double P() { return 4 * a; }

    }
   public class CRectangular : CFormulas
    {
        public double a { get; set; }
        public double b { get; set; }
        public CRectangular(double a, double b)
        {
            this.a = a;
            this.b = b;
        }
        public override double S() { return a * b; }
        public override double P() { return 2 * (a + b); }
    }
    class zad
    {
        static void Main(string[] args)
        {
            CSquare f1 = new CSquare(5);
            Console.WriteLine("Лицето на квадрата е {0}, а периметъра е {1}.", f1.S(), f1.P());
            CRectangular f2 = new CRectangular(2, 3);
            Console.WriteLine("Лицето на правоъгълника е {0}, а периметъра е {1}.", f2.S(), f2.P());
            Console.ReadKey(true);
        }
    }
}

第二个项目

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using zad8;


namespace zad8
{
    class CParallelepiped : CRectangular
    {
        public CParallelepiped(double a, double b, double h) : base(a, b) {
            this.h = h;
            this.a = a;
            this.b = b;
        }
        double h { get; set; }
        //public CParallelepiped(double h) { this.h = h; }



        public override double SF() { return 2 * (a*b+b*h+h*a); }
        public override string ToString()
        {
            return string.Format("Пълната повърхнина на фигурата е {0}",SF());
        }
        public override double V() { return a*b* h; }
        public override string ToString() { return string.Format("Обема на фигурата е {0}", V()); }
    }

    class Program
    {
        static void Main(string [] args)
        {
            //CParallelepiped f3 = new CParallelepiped(1,2,3);
            //Console.WriteLine("Пълната повърхнина на паралелепипеда е {0}.", f3.SF());
            Console.ReadKey(true);
        }
     }
}

【问题讨论】:

  • 您确定问题不在于CSquare / CRectangle 上缺少的SF / V 覆盖吗?添加这些,它会为我编译...
  • 注意:构建选项之一是一个开关,它告诉它什么类型在...中寻找Main方法,如果你有指定 那个,但指定不正确:它不起作用。尝试更改该值 - 它是项目属性中的“启动对象”,在“应用程序”选项卡上 - 或 csproj 中的 <StartupObject>
  • 邮政编码作为问题的一部分,而不是在 pastebin 上。

标签: c# oop


【解决方案1】:

您的实现中有几个问题,但 Main 方法不是其中之一。

  • 您需要实现所有抽象成员。
  • CParallelepiped 中有两个 ToString() 实现
  • 您可能不应该从另一个控制台应用程序引用一个控制台应用程序。改为使用类库。

以下代码编译:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using zad8;


namespace zad8
{
    public abstract class CFormulas
    {
        abstract public double S();
        abstract public double P();
        abstract public double SF();
        abstract public double V();
    }
    public class CSquare : CFormulas
    {
        double a { get; set; }
        public CSquare(double a)
        { this.a = a; }
        public override double S() { return a * a; }
        public override double P() { return 4 * a; }
        public override double SF()
        {
            throw new NotImplementedException();
        }

        public override double V()
        {
            throw new NotImplementedException();
        }
    }
    public class CRectangular : CFormulas
    {
        public double a { get; set; }
        public double b { get; set; }
        public CRectangular(double a, double b)
        {
            this.a = a;
            this.b = b;
        }
        public override double S() { return a * b; }
        public override double P() { return 2 * (a + b); }
        public override double SF()
        {
            throw new NotImplementedException();
        }

        public override double V()
        {
            throw new NotImplementedException();
        }
    }

    class CParallelepiped : CRectangular
    {
        public CParallelepiped(double a, double b, double h) : base(a, b) {
            this.h = h;
            this.a = a;
            this.b = b;
        }
        double h { get; set; }
        //public CParallelepiped(double h) { this.h = h; }



        public override double SF() { return 2 * (a*b+b*h+h*a); }

        public override double V() { return a*b* h; }
        public override string ToString() { return string.Format("Обема на фигурата е {0}", V()); }
    }

    class Program
    {
        static void Main(string [] args)
        {
            //CParallelepiped f3 = new CParallelepiped(1,2,3);
            //Console.WriteLine("Пълната повърхнина на паралелепипеда е {0}.", f3.SF());
            Console.ReadKey(true);
        }
     }
}

【讨论】:

    猜你喜欢
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    相关资源
    最近更新 更多