c# - 程序 * 不包含适用于带有代码的入口点 * 的静态“主”方法
问题描述
我已经完成了制作一个程序的作业,该程序由 2 个单独的项目组成,包含方形、矩形和平行六面体的类,并且能够计算它们的面积。我认为我已正确完成所有操作并连接了项目,但是当我尝试编译代码时,我不断收到此错误消息:
Program * 不包含适用于入口点的静态“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);
}
}
}
解决方案
您的实现中有几个问题,但 Main 方法不是其中之一。
- 您需要实现所有抽象成员。
- 您有两个 ToString() 实现
CParallelepiped
- 您可能不应该从另一个控制台应用程序引用控制台应用程序。改为使用类库。
以下代码编译:
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);
}
}
}
推荐阅读
- google-apps-script - 修改代码 - 将范围复制到另一个电子表格 Google 表格
- c# - 我可以在单个按钮上添加 2 个功能吗(Unity)
- sql - 为什么 Jpa N+1 这么糟糕?
- python - Python的resource.RLIMIT_VMEM(或resource.RLIMIT_AS)返回的两个数字是什么意思?
- python - Spyder 中的并行计算
- vue.js - 为什么我的 v-model 上没有更新的标签索引?
- ibm-watson - 可怕的沃森转录
- typescript - 为什么 Typescript 允许将 `{a: 1, b: 2}` 分配给类型 `{a: any} | {b:任何}`?
- python - Python 多处理列表问题
- c - 尝试用空格替换输入字符串中的制表符时遇到分段错误