在移动应用程序中使用对象 c#
Using an Object in Mobile App c#
我正在使用 c# 和 Xamarin.Forms 开发一个简单的移动应用游戏,但在尝试使用名为 Player 的对象 class 时遇到了困难。
class Player
{
private int level;
public int Level
{
get { return Level; }
set { Level = value; }
}
public Player()
{ //variables initialized
this.Level = 1;}
}
创建 UI 的 ContentPage 也创建了一个 Player 实例,但是当访问 Player 中的任何 属性 时,应用程序崩溃。
现在我在 BasePage(ContentPage class)中将 Player 播放器作为数据成员,并且当用户按下按钮时会发生对播放器的访问:
class BasePage : ContentPage
{
private Player player;
public BasePage() {
player= new Player();
//stuff...
var btnPlayer = new Button
{
Text = "YOU"
};
btnPlayer.Clicked += (o, e) =>
{
//change text in lblMessage
lblMessage.Text = "Your level: " + player.Level;
};
//stuff is added to screen, not relevant
}
我应该如何创建播放器才不会崩溃?我一直在检查这里的其他问题,但我一直无法找到我要找的东西(我也尝试过绑定对象,但我可能没有正确地做到这一点)。
此代码导致无限递归循环 - public Level
(大写 'L')属性 返回 public 级别 属性,这会导致它再次调用 'get',重复
public int Level
{
get { return Level; }
set { Level = value; }
}
相反你应该使用私有成员变量level
(小'l')
public int Level
{
get { return level; }
set { level = value; }
}
您也可以这样做,这将允许 C# 为您创建 属性 而无需显式创建私有变量。
public int Level { get; set; }
我正在使用 c# 和 Xamarin.Forms 开发一个简单的移动应用游戏,但在尝试使用名为 Player 的对象 class 时遇到了困难。
class Player
{
private int level;
public int Level
{
get { return Level; }
set { Level = value; }
}
public Player()
{ //variables initialized
this.Level = 1;}
}
创建 UI 的 ContentPage 也创建了一个 Player 实例,但是当访问 Player 中的任何 属性 时,应用程序崩溃。
现在我在 BasePage(ContentPage class)中将 Player 播放器作为数据成员,并且当用户按下按钮时会发生对播放器的访问:
class BasePage : ContentPage
{
private Player player;
public BasePage() {
player= new Player();
//stuff...
var btnPlayer = new Button
{
Text = "YOU"
};
btnPlayer.Clicked += (o, e) =>
{
//change text in lblMessage
lblMessage.Text = "Your level: " + player.Level;
};
//stuff is added to screen, not relevant
}
我应该如何创建播放器才不会崩溃?我一直在检查这里的其他问题,但我一直无法找到我要找的东西(我也尝试过绑定对象,但我可能没有正确地做到这一点)。
此代码导致无限递归循环 - public Level
(大写 'L')属性 返回 public 级别 属性,这会导致它再次调用 'get',重复
public int Level
{
get { return Level; }
set { Level = value; }
}
相反你应该使用私有成员变量level
(小'l')
public int Level
{
get { return level; }
set { level = value; }
}
您也可以这样做,这将允许 C# 为您创建 属性 而无需显式创建私有变量。
public int Level { get; set; }