gpt4 book ai didi

c# - 拥有 "generic"枚举是不好的做法吗?

转载 作者:行者123 更新时间:2023-11-30 14:11:55 29 4
gpt4 key购买 nike

我有一个带有“BlockType”枚举的图形程序。根据州的不同,这可能是以下几种情况之一:木头、石头、草地等。

最初,必须针对每种可能性执行各种纹理操作,但由于进行了一些重构,枚举仅用作整数,switch 语句不再需要它。即:

BlockType someFoo = someObj.blockType;

Texture usedTexture = textureLookupArray[(int) someFoo];

但是作为一个副作用,枚举字符串完全是多余的!我可以将“Stone”纹理放在位置 5,即使 BlockType 5 被定义为“Carpet”、“Gravel”或“JQuery”!

我的第一个想法是简单地重写 BlockType 以定义“Material1、Material2 等”。而不是硬编码(并且可能存在冲突!)的值,但这真的有用吗?

将 BlockType 保留为枚举是否有一些我忽略的好处,或者我应该将其切换为常规 Int 以减少混淆?

最佳答案

当字典会好得多时,为什么要使用数组?

private Dictionary<BlockType, Texture> _textures = 
new Dictionary<BlockType, Texture>
{
{ BlockType.Wood, new WoodTexture() },
{ BlockType.Metal, new MetalTexture() },
//etc
}

使用起来更优雅

var tex = _textures[someObj.blockType];

关于c# - 拥有 "generic"枚举是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949002/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com