当我运行此代码时,我的应用程序因某些原因崩溃,它只是关闭并标记出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();
}
}
}
答案 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;
}