c# - C# 访问类数据,初学者问题
问题描述
我正在尝试创建一个武器数据库,并为每种武器分配多个属性,例如名称、攻击值、购买值、销售值等。
namespace Testing
{
public class Weapon
{
public string name;
//other attributes would go here too
}
class Program
{
static void WeaponBuilder()
{
Weapon bSword = new Weapon();
bSword.name = "Bronze Sword";
//many other weapons would be built here
Console.WriteLine(bSword.name); //works fine
}
static void Main(string[] args)
{
WeaponBuilder();
Console.WriteLine(bSword.name); //error: bSword does not exist in the current context
WeaponShop();
Console.ReadLine();
}
static void WeaponShop()
{
Console.WriteLine("Buy " + bSword.name + "?"); //error: bSword does not exist in the current context
}
}
}
我需要能够在制造地点之外访问武器的数据。任何帮助表示赞赏。我知道这是一个菜鸟问题,我很抱歉。
解决方案
您可以将数据放在类级别而不是临时局部范围变量:
class Program
{
static public Weapon bSword { get; } = new Weapon();
static void InitializeWeapon()
{
BSword.name = "Bronze Sword";
Console.WriteLine(bSword.name); //works fine
}
static void Main(string[] args)
{
InitializeWeapon();
Console.WriteLine(BSword.name);
WeaponShop();
Console.ReadLine();
}
...
}
因此,它可以在类内部和外部以只读模式访问,作为一个组合。
您似乎想管理多种武器,因此您可以使用List:
public class Weapon
{
public string Name { get; set; }
}
class Program
{
static public List<Weapon> Weapons { get; } = new List<Weapon>();
static void InitializeWeapons()
{
Weapons.Add(new Weapon { Name = "Bronze Sword" });
Weapons.Add(new Weapon { Name = "Silver Sword" });
foreach ( var weapon in Weapons )
Console.WriteLine(weapon.Name);
}
static void Main(string[] args)
{
InitializeWeapons();
ShopWeapon();
Console.ReadLine();
}
static void ShopWeapon()
{
foreach ( var weapon in Weapons )
{
Console.WriteLine($"Buy {weapon.Name}?");
// ...
}
}
}
推荐阅读
- xml - 如何使用 VB.NET 中的 openxml 方法从具有所有设置(格式和对齐方式)的现有 XML 文件数据创建 word 文件?
- python - 将所有非零值放在数组的右侧
- javascript - 如何比较 2 个不同长度的对象数组?
- flask-jwt - flask-jwt 和 flask-jwt-extended 之间有区别吗?
- css - 将 TD 拆分为不同的部分
- mysql - WordPress管理面板重定向并且没有解决方案有效
- ios - 从 iTunesConnect 中(永久)删除应用程序后重新使用相同的捆绑包 ID
- r - 如何对 R 中的 73 个变量进行夏皮罗威尔克斯测试
- c - 为什么 select() 有时会连续返回 0
- react-native - React native:Error:Location ..... 不可移动