static void主要的密码测试方法

时间:2015-10-13 10:26:23

标签: c# .net

当我在不使用静态方法的情况下运行程序时,它说...

  

运行解决方案......   编译成功。   示例测试:[ - 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;
    }

那么不使用静态方法吗?

2 个答案:

答案 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的路径。