gpt4 book ai didi

c# - 为大字符串识别您自己的字符串对象?

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:58 26 4
gpt4 key购买 nike

也许这听起来很奇怪,但我们的想法是定义一个类,比如说 LargeString,它就像一个字符串,除了它不应该通过调用创建一个新的引用'+=' 运算符。

所以我可以使用这个 LargeString 进行连接,而不是 StringBuilder-Class。

这看起来应该是这样的:

LargeString s1 = "someLongString1";
LargeString s2 = "someLongString2";
LargeString s3 = s1 + s2;
s3 += "someLongString3"

那么最后一行不应该创建一个新的引用。这是否可以通过可重载运算符或其他技巧以某种方式实现?

注意:我知道我可以通过使用本地
创建一个类来轻松实现这一点 Stringbuilder成员(member),不过我真的很想找一个更漂亮的 方式。

最佳答案

C# 不允许重载 = 运算符或 += 运算符。 += 运算符将使用任何适当的 + 运算符,但将始终执行 + 后跟 =

唯一的选择是覆盖 + 运算符以返回左侧实例,例如:

//Allows no copy +=
public static operator +(LongString left, LongString right)
{
left.Add(right);
return left;
}

//Allows assignment of string to LongString
public static implicit operator LongString(string original)
{
return new LongString(original);
}

但我强烈反对这样做,因为它根本不是标准的,并且会让任何使用它的人感到困惑。

关于实际实现,除非 StringBuilder 在您的设计中存在重大缺陷,否则您可能希望将其包装为您的基本案例。

关于c# - 为大字符串识别您自己的字符串对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16739847/

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