【发布时间】:2016-09-19 14:52:41
【问题描述】:
我正在做一个关于制作一个小型控制台程序的练习,该程序可以显示汽车的移动速度以及使其行驶速度更快或更慢的功能。
所以这是我的名为 car 的类,它包含一个构造函数。
private int speed 有一个 get 和 set 访问器。
有 2 种方法称为加速和中断。
class car
{
private int speed;
public car (int initialSpeed) //initializes car speed
{
Speed = initialSpeed;
}
public void accelerate() //increase Speed
{
Speed = Speed + 10;
}
public void brake() //decrease Speed
{
Speed = Speed - 10;
}
public int Speed //access private int speed
{
get { return speed; }
set { speed = Speed; }
}
}
现在问题来了:
class program
{
static void Main(string[] args)
{
var Car = new car(5);
Console.WriteLine(Car.Speed);
}
}
当我运行程序时,即使初始化为 5,控制台也只显示 0。为什么会发生这种情况,我做错了什么?
【问题讨论】:
-
它确实为我编译
-
Speed不是speed(标识符区分大小写) -
您应该关注.NET capitalization conventions。所以类应该是pascal-case,这意味着它们以大写字母开头,而局部变量应该以小写字母开头。否则很难阅读您的代码。
-
set { speed = Speed; }应该是set { speed = value; } -
或者,或者
public int Speed { get; set; },完全去掉speed字段。