覆盖KeyValuePair上的ToString()<>结构

时间:2011-05-12 23:03:06

标签: c#

在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()
    {
        ...
    }
}

4 个答案:

答案 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()方法,因此这可能不会为您完成任何事情。