我需要创建一个字典,其键为字符串,值为(委托函数或字符串)之一。
因为我想实现回调机制,有时需要用于更多处理的返回字符串的函数,有时仅需要固定字符串。
在C#中有没有办法做到这一点?
谢谢
我需要创建一个字典,其键为字符串,值为(委托函数或字符串)之一。
因为我想实现回调机制,有时需要用于更多处理的返回字符串的函数,有时仅需要固定字符串。
在C#中有没有办法做到这一点?
谢谢
Dictionary<string, Func<string>>
。这个字典可以显然地包含回调函数。对于非回调函数,您可以创建一个微不足道的lambda表达式来返回硬编码值。private Dictionary<string, Func<string>> m_map;
public void AddValue(string key, string value) {
m_map[key] = () => value;
}
public void AddValue(string key, Func<string> value) {
m_map[key] = value;
}
如果需要一个固定的字符串,您可以创建一个返回固定字符串的函数。这样,在两种情况下,您都只需要处理返回字符串的函数。
一个Dictionary<string, object>
就可以解决问题,你只需要将结果转换为string
或Func<string>
即可。
将字典的值声明为对象。
public class MyCoolClass
{
public MyCoolClass(Func<string> getString)
{
m_getString = getString;
}
public MyCoolClass(string s)
{
m_string = s;
}
public string GetString()
{
return m_string ?? getString();
}
private string m_string;
private Func<string> m_getString;
}
使用字典的示例
static void Main()
{
var dic = new Dictionary<string, Func<string>>();
dic.Add("A", () => "Hello World"); // Constant lambda
dic.Add("B", ConstructString); // Calculated
dic.Add("C", delegate { return string.Empty; }); // Anonymous delegate
}
static string ConstructString()
{
return DateTime.Now.ToString();
}