gpt4 book ai didi

c# - 覆盖类字段的 ToString() 方法

转载 作者:行者123 更新时间:2023-12-04 23:07:26 25 4
gpt4 key购买 nike

我想知道,有什么方法可以覆盖 ToString()类型为 byte[] 的类字段的方法?我什至不确定这是否可能......这是示例代码:

public class Object
{
private byte[] _content;

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

internal set
{
_content = value;
}
}
}

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

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

显而易见的方法是让我的脑袋冒出来——在 byte[] 周围创建一个包装器并覆盖其 ToString()但这对我来说看起来很丑,我认为不值得。

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

提前谢谢了!

最佳答案

不,您不能覆盖或替换 ToString() 的实现在字节数组上一般还是Content属性(property)具体。为了获得您想要的结果,您可能需要包装数组,您已经声明不想这样做。

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

public string ContentAsString
{
get
{
return /* custom string output of this.Content here */
}
}

另一种选择是扩展字节数组(通过扩展方法)以提供字符串转换的自定义实现(并使用不同的名称)(与上述相同的想法,表达方式不同)
static class MyExtensions
{
public static string ToCustomString(this byte[] array)
{
return ...
}
}

string result = obj.Content.ToCustomString();

关于c# - 覆盖类字段的 ToString() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8358711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com