如何添加将类引用数据返回到 c# 类的函数
本文关键字:返回 数据 函数 引用 添加 何添加 | 更新日期: 2023-09-27 18:35:49
我有以下类:
public class Content {
public int Key { get; set; }
public int Order { get; set; }
public string Title { get; set; }
}
我有以下函数,它根据 id 返回内容类型代码。
protected string getType(string id) {
switch(id.Substring(2, 2)) {
case "00": return ("14");
case "1F": return ("11");
case "04": return ("10");
case "05": return ("09");
default: return ("99");
}
}
尽管 id 不是内容类的一部分,但类和函数始终一起使用。
有什么方法可以将这个函数干净地放入我的类中吗?我正在考虑一个枚举或固定的东西,但是我对 C# 的了解还不足以让我知道我该怎么做。我希望有人能给我和榜样。
更新:
我喜欢以下建议:
public static readonly Dictionary<String, String> IdToType =
new Dictionary<string, string>
{
{"00", "14"},
{"1F", "11"},
{"04", "10"},
{"05", "09"},
//etc.
};
但我不知道我怎样才能把它融入我的课堂。有没有人可以给我看?我希望能够做的是写这样的东西:
Content.getType("00")
按照建议将数据存储在字典中。
这可能不是您要找的,但我会使用字符串来字符串字典。
如果你想让它成为类的公共静态成员,那可能是你所追求的。
前任:
public static readonly Dictionary<String, String> IdToType =
new Dictionary<string, string>
{
{"00", "14"},
{"1F", "11"},
{"04", "10"},
{"05", "09"},
//etc.
};
像这样的东西是你要找的吗?
public class Content
{
public int Key { get; set; }
public int Order { get; set; }
public string Title { get; set; }
public static string getType(string id)
{
switch (id.Substring(2, 2))
{
case "00": return ("14");
case "1F": return ("11");
case "04": return ("10");
case "05": return ("09");
default: return ("99");
}
}
}
该方法可以像这样调用:Content.getType("00")
。
旁白:按照惯例,C# 中的方法名称应该是 Pascal 大小写的,因此您的方法名称应该GetType
。您可能已经发现,System.Object
上已经有一个名为 GetType
的方法,因此您可能想想出一个更具描述性的名称。
Gemma,
只是为了解释@DLH的答案:
public class Content
{
public int Key { get; set; }
public int Order { get; set; }
public string Title { get; set; }
public static readonly Dictionary<String, String> getType =
new Dictionary<string, string>
{
{"00", "14"},
{"1F", "11"},
{"04", "10"},
{"05", "09"},
//etc.
};
}
然后将允许您执行此操作:
string value = Content.getType["00"];
看来您需要将枚举与扩展方法结合使用...
例如
static string Default = "99";
public static readonly Dictionary<string, string> Cache = new Dictionary<string,string>(){
{"00", "14"},
{"1F", "11"},
{"04", "10"},
{"05", "09"},
//etc
}
public static getType(Content this){
if(Cache.ContainsKey(this.typeId)) return Cache[this.typeId];
else return Default;
}
//Add other types as needed
或者请参阅这篇文章以获取TypeSafe 枚举模式模式的示例:C# 字符串枚举
您可以定义一个与字符串相当的类...
然后,您可以使用所需的内容值定义枚举。
然后,您可以添加运算符重载来处理字符串、整数或长整型等。
然后,您将为枚举类型添加运算符重载。
使用这种方法,您将不需要字典,甚至不需要枚举,因为您将在 Content 类中声明 const 只读属性,例如 public static readonly Type0 = "00";
这实际上比使用类型安全枚举模式要少,尽管它是相似的,并且它为您提供了能够声明实数常量的好处。