Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 访问类';s属性有两个方面_C#_Class_Inheritance_Properties - Fatal编程技术网

C# 访问类';s属性有两个方面

C# 访问类';s属性有两个方面,c#,class,inheritance,properties,C#,Class,Inheritance,Properties,我一直坚持创建一个类体系结构来实现这一点: 我有很多(大约78种)类型的积木。 游戏的关卡由这些方块组成。 在level的ByteArray中,只有数字,表示块的类型。 因此,对于冲突处理,我只需检索所需位置的数字,并获取该块的属性。(实体、可选、可见、纹理)。 但是 我将对这个块列表重新排序,因此,还需要一种按名称访问块属性的方法 所以,我希望能够通过 块[5]。属性 & 石块、岩石、财产 请注意,这些不是实例,我不必实例化它们来访问它们的属性。因为不同的块类型都是整数,所以可以使用映射/字典

我一直坚持创建一个类体系结构来实现这一点:

我有很多(大约78种)类型的积木。 游戏的关卡由这些方块组成。 在level的ByteArray中,只有数字,表示块的类型。 因此,对于冲突处理,我只需检索所需位置的数字,并获取该块的属性。(实体、可选、可见、纹理)。 但是 我将对这个块列表重新排序,因此,还需要一种按名称访问块属性的方法

所以,我希望能够通过

块[5]。属性

&

石块、岩石、财产


请注意,这些不是实例,我不必实例化它们来访问它们的属性。

因为不同的块类型都是整数,所以可以使用映射/字典/关联数组

Dictionary<string, int> BlockTypes = new Dictionary<string, int>();
BlockTypes["Rock"] = 1337;
Dictionary BlockTypes=newdictionary();
块体类型[“岩石”]=1337;

如果需要块[5]。属性以及块.Rock.Properties,块必须是带有索引器的自定义类。该设置类似于操作:

public Block this[] (int index) 
{
   //getter logic here
}
索引器可以采用整型或字符串,因此您可以使用块包装字典,并通过键访问值:
Blocks[“Rock”]。Properties
。这确实涉及“神奇字符串”,如果拼写错误,编译器将无法捕捉到这些字符串

命名的getter是简单的只读属性:

public Block Rock { get{//getter logic here} }

如果这是我的应用程序,我将创建一个singleton Blocks类。这些块是游戏的一部分,在游戏的整个生命周期中都会用到,你不想显式地实例化它们;单例场景的定义(与所有静态实例相比,更容易更改为正常范围的实例)。该Blocks类将封装一组块对象,然后该实现隐藏在块访问器后面。您可以使用列表并使用Linq搜索其属性(我假设块的属性将包括块ID及其名称),或者您可以选择块的索引或名称作为块字典的键。

您所说的“它们不是实例”是什么意思?那么它们是什么?换句话说,我不必实例化它们来访问它们的属性。对不起,误解了这个问题,但相同的概念适用于Block而不是int作为字典中的值。属性呢?它们存储/访问在哪里?这只是解释了如何用数字列出东西。你能给我解释一下整本字典吗?我不明白你对字典的看法。字典是一个集合,就像列表或数组一样,但它的对象是键值对,你可以通过指定键从集合中获取元素。该键可以是您希望能够用于查找值的任何标识信息。把它想象成一本电话簿;您可以通过查找某人的姓名来查找其号码。大多数字典实现只允许一个键,不支持通过索引进行独立检索;然而,这样做是可能的。