gpt4 book ai didi

c# - 枚举和属性命名冲突

转载 作者:IT王子 更新时间:2023-10-29 03:55:40 29 4
gpt4 key购买 nike

当使用具有枚举属性的类时,通常会在属性名称和枚举类型之间发生命名冲突。示例:

enum Day{ Monday, Tuesday, ... }

class MyDateClass
{
private Day day;

public Day Day{ get{ return day; } }
}

因为只有标志枚举应该有复数名称,所以将枚举命名为“Days”不是非标志枚举的方式。在上面的示例中,您可以为枚举或属性使用一些变体,例如“WeekDay”。但在一般情况下,没有像这样好的变体,因此您最终会为具有 Foo 和 Bar 类型枚举属性的对象使用诸如“FooMode”或“BarKind”之类的属性。不太优雅。

在这种情况下,您通常如何命名枚举和属性?


感谢您的快速回复。另一个问题:为什么不建议嵌套公共(public)枚举,如果要嵌套公共(public)枚举,如何解决命名问题?

class Vehicle
{
enum Kind{ Car, Bike }

public Kind Kind{ get{ return ... } }
}

class Meal
{
enum Kind{ Dessert, MainCourse }

public Kind Kind{ get{ return ... } }
}

在上面的场景中,鉴于 Meal 和 Vehicle 共享相同的命名空间,如果不分别重命名 MealKind 和 VehicleKind,我就不能将“Kind”移出这两个类中的任何一个。我喜欢的样子

myVehicle.Kind = Vehicle.Kind.Car

但这不是指南推荐的内容。这里的最佳做法是什么?永远不要使用嵌套的公共(public)枚举而是将它们命名为 VehicleKind 等?

最佳答案

没有冲突。事实上,.NET Framework style guide encourages you to do this ,例如如果您有一个类具有一个类型的单个属性(无论是枚举还是类),那么您应该将其命名为相同的。典型示例是 Color 类型的 Color 属性。没关系,除非有两种颜色 - 在这种情况下,两种颜色都应该在名称中添加一些内容(即 BackColor 和 ForeColor,而不是 Color 和 BackColor)。

关于c# - 枚举和属性命名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211567/

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