繁体   English   中英

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

[英]Overriding ToString() on a KeyValuePair<> struct

就像在tile中一样:覆盖KeyValuePair <> struct(System.Collections.Generic)上的ToString()。我想知道这是否可以在C#(密封结构)中完成。

任何人都可以提供一些见解或替代方法?

或者我应该忘记覆盖并执行以下操作:

class MyKeyValuePair
{
    public KeyValuePair<T> Pair { get; set; }
    public MyKeyValuePair(KeyValuePair<T> pair)
    {
        this.Pair = pair;
    }
    public override ToString()
    {
        ...
    }
}

没有。

您无法修改现有类型,并且无法继承struct

那这个呢:

static class KeyValueHelper
{
   public static string ToMyString<K, V>(this KeyValuePair<K, V> pair) { ... }
}

struct 不能被继承 ,因此不能覆盖其成员。

正如你自己建议的那样,你必须自己动手。

您可以做的最好的事情可能是创建一个扩展方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM