世界上有哪些编程语⾔
Tiobe排⾏榜 - https://www.tiobe.com/tiobe-index/
C#文档 - https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-versionhistory
菜⻦教程 - https://www.runoob.com/csharp/csharp-tutorial.html
vscode :VSCode 合并代码行|极客教程 (geek-docs.com)
C#坦克大战问题
问题1:
System.NullReferenceException:“未将对象引用设置到对象的实例。”
bmp 是 null。
public Direction Dir { get {return dir; }
set {
dir = value;
Bitmap bmp = null;
switch (dir)
{
case Direction.Up:
bmp = BitmapUp;
break;
case Direction.Down:
bmp = BitmapDown;
break;
case Direction.Left:
bmp = BitmapLeft;
break;
case Direction.Right:
bmp = BitmapRight;
break;
}
Width = bmp.Width;
Height = bmp.Height;
} }
原因:BitmapUp的值为null,导致不能获取bmp.Width, bmp.Height
由于先赋值了this.Dir 返回public Direction Dir { get ; set;}中而此时BitmapUp还没赋值
public MyTank(int x, int y, int speed)
{
Ismove = false;
this.X = x;
this.Y = y;
this.speed = speed;
this.Dir = Direction.Up;
BitmapUp = Resources.MyTankUp;
BitmapDown = Resources.MyTankDown;
BitmapLeft = Resources.MyTankLeft;
BitmapRight = Resources.MyTankRight;
}
问题2
显示当前对象正在其他地方使用
原因:
按下多次方向键,多次触发导致争夺资源
解决:用lock锁
问题3:
子弹已被移除