c# - 如何将对象和整数存储在数组中?
问题描述
我目前正在从事一个项目,我必须将仓库转换为数组表示,但是,我遇到了问题。我想将工作人员可以行走的路径定义为值 = 1 的数组单元。工作人员不能去的地方的值为 0,带有物品的货架将是对象。这当然不是一个可行的选择,因为我们不能将对象存储在 int 数组中,但是,除了使用 int 数组之外,我目前想不出另一种表示路径的方法。那么如何去做呢?这是我正在寻找的快速视觉表示:数组示例
namespace MyApplication
{
class MagazijnObject
{
public string Locatie;//waar ligt het product?
public int Ranking; //hoe populair is dit product?
public string Item; //welk product ligt hier?
public MagazijnObject(string loc, int rank, string it)
{
Locatie = loc;
Ranking = rank;
Item = it;
}
static void Main(string[] args)
{
MagazijnObject voorbeeld = new MagazijnObject("D02020A", 1, "Meel");
Console.WriteLine(voorbeeld.Locatie);
Console.WriteLine(voorbeeld.Ranking);
Console.WriteLine(voorbeeld.Item);
int[,] GangVoorbeeld = new int[5,10]; //this is a single hallway, with shelves on either side
string gang = "D02";
//traverse array
for (int i = 0; i < GangVoorbeeld.GetLength(0); i++)
{for (int j = 0; j < GangVoorbeeld.GetLength(1); j++)
{ if ( i == 1 || i == 3) //shelves with items
{GangVoorbeeld[i,j] = new MagazijnObject(gang + i, 1, "test"); //try to create object, however can't do so because I have an int array. However, I don't know how to define the walking path in an object representation.
}
}
}
}
}}
任何提示将不胜感激!亲切的问候, Douwe Brink
解决方案
如果你设置在一个数组上,你可以让它成为你想要使用的一些共同父级的数组。最简单的当然是一个object[][]
,但让你绊倒的是这种对制作人行道的执着一个int
和一个架子一个对象..将仓库中的所有东西建模为基类的某种派生似乎更明智,而不是让走道成为0/1的整数。
class WarehouseEntity {}
class Wall:WarehouseEntity{}
class Walkway:WarehouseEntity{}
class Shelf:WarehouseEntity{}
var warehouse = new WarehouseEntity[5,10] ...
现在,您可以在阵列中的任何位置放置墙壁、走道或架子。走道可以包含当前站在那 10 平方米(或其他)走道中的人员列表。一个货架可能有一个它包含的产品列表等。一面墙没有多大作用,但记录为一面墙可能很方便,因为也许你只是想让各种 WarehouseEntity 有一个它们是什么的位图图形,渲染它们只是在warehouse
数组上循环,询问每个元素的位图,而不是说“如果是墙,就画墙,如果是人行道,就画人行道..”
class WarehouseEntity {
Point Coordinates {get; set;}
abstract Bitmap GetBitmap();
}
class Wall:WarehouseEntity{
override Bitmap GetBitmap(){ return _wall_bmp; }
}
class Walkway:WarehouseEntity{
public List<Person> PeopleStandingHere;
override Bitmap GetBitmap(){ return _walkway_bmp; }
}
class Shelf:WarehouseEntity{
public List<Product> ProductsOnShelf;
override Bitmap GetBitmap(){ return _walkway_bmp; }
}
...
foreach(var we in warehouse)
{
graphics.DrawImage(we.GetBitMap(), we.Coordinates.X, we.Coordinates.Y);
}
..多态性,宝贝!:)
推荐阅读
- sql - 选择列之间记录的唯一组合
- java - 类加载器泄漏是如何发生的
- sql - Left Join on three tables in access with Group by
- c# - C# Razor 页面和跨站点脚本(XSS)问题
- javascript - 反应路由器链接使用
- angular - 浏览器无法导航到路由链接
- python - 错误:找不到满足要求 tensorflow 的版本
- flutter - setState() 在构造函数中调用:_ModalIngredientsState#60ddf(生命周期状态:已创建,无小部件,未安装)
- python - 为什么 python 发布请求返回 200 html 而 CURL 返回 303(重定向)?
- heroku - 在 Heroku 上托管 .NET Core 控制台应用程序时保持应用程序处于活动状态