在tile中:覆盖KeyValuePair上的ToString()<> struct(System.Collections.Generic)。我想知道这是否可以在C#(密封结构)中完成。
任何人都可以提供一些见解或替代方法吗?
或者我应该忘记覆盖并选择以下内容:
class MyKeyValuePair
{
public KeyValuePair<T> Pair { get; set; }
public MyKeyValuePair(KeyValuePair<T> pair)
{
this.Pair = pair;
}
public override ToString()
{
...
}
}
答案 0 :(得分:5)
没有
您无法修改现有类型,并且无法继承struct
。
答案 1 :(得分:2)
这个怎么样:
static class KeyValueHelper
{
public static string ToMyString<K, V>(this KeyValuePair<K, V> pair) { ... }
}
答案 2 :(得分:1)
struct
can not be inherited因此无法覆盖其成员。
你必须按自己的意愿自己动手。
答案 3 :(得分:1)
你可以做的最好的事情就是创建一个扩展方法:
static class KeyValuePairMethods
{
public static String ToCustomString<TK, TV>(this KeyValuePair<TK, TV> kvp)
{
return String.Format("{0}: {1}", kvp.Key, kvp.Value);
}
}
可以称为:
new KeyValuePair<string, int>("Hello", 12).ToCustomString();
当然,外部代码仍将使用ToString()方法,因此这可能不会为您完成任何事情。