当我在不使用静态方法的情况下运行程序时,它说...
运行解决方案...... 编译成功。 示例测试:[ - 1,3,-4,5,1,-6,2,1] 好 您的代码在语法上是正确的,并且在示例测试中正常工作。
当我使用静态方法时......
static void Main(string[] args)
{
int difference = new Solution().solution(new int[] { -1, 3, -4, 5, 1, -6, 2, 1});
Console.WriteLine(difference);
Console.ReadKey();
}
我收到了错误......
运行解决方案...... 编译器输出: 编译失败:2个错误,0个警告 user.cs(16,24):错误CS0017:程序
user.exe' has more than one entry point defined:
SolutionWrapper.Main(string [])' Solution.cs(40,17):错误CS0017:程序user.exe' has more than one entry point defined:
Solution.Main(string [])' 检测到一些错误。
我正在考虑Tape-Equilibrium挑战,这就是我想要做的事情,如果我删除静态void方法就没有错误....
static void Main(string[] args)
{
int difference = new Program().solution(new int[] { -1, 3, -4, 5, 1, -6, 2, 1});
Console.WriteLine(difference);
Console.ReadKey();
}
public int solution(int[] A)
{
// write your code in C# 6.0 with .NET 4.5 (Mono)
var length = A.Length;
if (length == 1) return A[0];
if (length == 2) return Math.Abs(A[0] - A[1]);
var leftSum = 0;
var rightSum = 0;
for (var i = 0; i < length; i++)
{
rightSum += A[i];
}
var difference = int.MaxValue;
for (var i = 0; i < length - 1; i++)
{
var value = A[i];
leftSum += value;
rightSum -= value;
difference = Math.Min(difference, Math.Abs(rightSum - leftSum));
if (difference == 0) return 0;
}
return difference;
}
那么不使用静态方法吗?
答案 0 :(得分:1)
这样做......它会起作用。
using System;
class Solution {
public int solution(int[] A) {
// write your code in C# 6.0 with .NET 4.5 (Mono)
var length = A.Length;
if (length == 1) return A[0];
if (length == 2) return Math.Abs(A[0] - A[1]);
var leftSum = 0;
var rightSum = 0;
for (var i = 0; i < length; i++)
{
rightSum += A[i];
}
var difference = int.MaxValue;
for (var i = 0; i < length - 1; i++)
{
var value = A[i];
leftSum += value;
rightSum -= value;
difference = Math.Min(difference, Math.Abs(rightSum - leftSum));
if (difference == 0) return 0;
}
Console.WriteLine(difference);
return difference;
}
}
答案 1 :(得分:0)
您收到此错误,因为您的代码中定义了两个static public void Main()
。
由于是自动生成的,因此您可能无法轻松删除它。您可以通过在项目属性中设置项目的启动对象&gt;来解决此问题。应用程序设置,或 - 如果手动构建 - 使用/main
编译器选项指定要作为入口点的Main
的路径。