是否可以声明与类子类型名称相同的属性?像这样:
class WorkerResult
{
public enum Status
{
Okay,
Wrong,
SomethingElse
};
public Status Status {get;set;}
public object Data {get;set;}
}
这导致以下错误:
The type 'WorkerResult' already contains a definition for 'Status' File.cs
答案 0 :(得分:4)
您不能拥有与该属性同名的子类型,您将收到冲突。您可以尝试在外面声明它。
public enum Status
{
Okay,
Wrong,
SomethingElse
};
class WorkerResult
{
public Status Status {get;set;}
public object Data {get;set;}
}
修改强> 正如@Ashigore评论的那样,你应该通过重命名来达到清晰度。拥有属性和枚举会增加混乱。或者最糟糕的情况是,如果你不想重命名它,可以考虑在同一个文件中使用枚举来显示更强的关联,而不是在类中使用它。
答案 1 :(得分:1)
是否可以声明与类名称相同的属性 子类名称?
不,这是一个基本的命名冲突 - 您的名称范围相同。想想你班级的代码客户端,Status
将提供给他?
var worker = new WorkerResult();
var status = worker.Status; //Which one will be supplied??
声明class
的 ,而不是其中的成员:
public enum Status
{
Okay,
Wrong,
SomethingElse
};
class WorkerResult
{
public Status Status {get;set;}
public object Data {get;set;}
}
答案 2 :(得分:1)
不错的问题和棘手我会做那样的事情:
public class WorkerResult
{
public static class Consts
{
public enum Status
{
Okay,
Wrong,
SomethingElse
};
}
public Consts.Status Status { get; set; }
public object Data { get; set; }
}