覆盖类字段的ToString()方法

shy*_*kov 3 .net c# oop class

我想知道,有没有办法ToString()用类型覆盖类字段的方法byte[]?我甚至不确定它是否可能......以下是示例代码:

public class Object
{
    private byte[] _content;

    public byte[] Content
    {
        get
        {
            return _content;
        }

        internal set
        {
            _content = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以覆盖Object.Content.ToString()方法的调用方式?

编辑:我为什么需要它?我想这Content可能是纯二进制数据,但它也可以是纯字符串.Encoding.UT8.GetString(Object.Content)如果我需要文字表示,我会使用以防万一!但是嘿!怎么样ToString()才能完美地符合我的目标,也许我能以某种方式使用它?

明显的方法是突然出现 - 创建一个包装byte[]并覆盖它,ToString()但这对我来说看起来很难看,我觉得不值得.

有没有优雅的方法来解决这个问题?或者解决它?

提前谢谢了!

Ant*_*ram 5

不,你不能一般地覆盖或替换ToString()字节数组或Content属性的实现.为了得到你想要的结果,你可能需要包装你已经说过你不想做的数组.

您还可以在类中提供另一个属性以有效地隐藏Content属性,例如

public string ContentAsString
{
    get 
    {
        return /* custom string output of this.Content here */
    }
}
Run Code Online (Sandbox Code Playgroud)

另一个选择是扩展字节数组(通过扩展方法)以提供字符串转换的自定义实现(并使用不同的名称)(与上面相同的想法,表达方式不同)

static class MyExtensions
{
    public static string ToCustomString(this byte[] array)
    {
        return ...
    }
}

string result = obj.Content.ToCustomString();
Run Code Online (Sandbox Code Playgroud)