C#Console应用程序在开始调试时崩溃,但没有调试器

时间:2017-01-12 17:16:48

标签: c# visual-studio

当我运行此代码时,我的应用程序因某些原因崩溃,它只是关闭并标记出VS.对我来说一切似乎都是正确的但我对C#和VS非常新。无需调试即可正常启动(CTRL + F5)。代码中的所有内容对我来说都是正确的,我在代码中也没有警告。

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

namespace phoneSpace{

    class PhoneNumber{

        private string Number; 

        public string number{
             get; set; 
        }

        public PhoneNumber(string number){
             Number = number;
        }

        public void printNumber(){
            Console.WriteLine("{0}", Number);
        }

        static void Main(string[] args)
        {
            PhoneNumber phoneOne = new PhoneNumber("0703502341");
            phoneOne.printNumber();
        }
    }
}

3 个答案:

答案 0 :(得分:2)

你确定它在执行后崩溃不是自动关闭吗?

代码对我来说似乎是正确的,只需在main函数内的最后一行之后添加以下行。

Console.ReadKey();

答案 1 :(得分:0)

每当您在调试模式下运行应用程序时,无论何时应用程序在模式下完成执行,它都会自动关闭,在非调试模式下不会发生(在没有调试的情况下运行)。

我建议您在Console.Read();方法的最后一行添加Main,等待用户按下键然后关闭。

答案 2 :(得分:0)

在我看来,代码很好,应用程序正在关闭,因为没有什么可以等待。如果您查看this question(引用以供参考):

  

如果您在没有调试的情况下运行(Ctrl + F5),则默认情况下会提示您按返回关闭窗口。如果要使用调试器,则应在最后一行放置断点。

因此,在没有调试器的情况下运行时,Visual Studio将自动阻止应用程序关闭。

要在使用调试器运行时解决此问题,您可以使用各种选项,例如设置断点或提示用户输入:

Console.ReadKey(); //Any key press will close the application
//Or
Console.ReadLine(); //On ending a line the application will close: usually with enter
//etc

另请注意,以下代码可能会产生警告,因为变量的名称与@PaulF提到的相同:

private string Number; 

public string number 
{
    get; set; 
}

public PhoneNumber(string number)
{
    Number = number;
}

我会更改代码以匹配命名约定,并使其成为属性实际使用其支持字段:

private string _number; 

public string Number { get { return _number; } set { _number = value; } }

public PhoneNumber(string number)
{
    _number = number;
}

最好还是看到财产没有做任何特别的事情我会删除该字段:

public string Number { get; set; }

public PhoneNumber(string number)
{
    Number = number;
}