【发布时间】:2019-07-16 13:13:26
【问题描述】:
我计划创建自己的字符串类,但它会提供最大长度。 我们称之为“lString”。 我想在我的代码中像“字符串”类一样使用“lString”。但是我可以为它设置一个最大长度。
例如,应该构建这段代码:
// 1- No maxlength provided, so the object will be created.
lString mylString1 = "0123456789";
// 2- maxlength provided, so it will be checked, and then created.
lString mylString2 = new lString("0123456789", 10);
// 3- This time only maxlength provided, so it will be a string object with maxLength.
lString mylString3 = new lString(20);
// At the end, I should be able to use it like a regular strings:
mylString3 = mylString1 + mylString2;
// Below should throw exception at RunTime, because it will be over 20)
mylString3 = mylString1 + mylString2 + mylString1 + mylString2;
【问题讨论】:
-
然后呢?有用吗?
-
我认为这是不可能的。您正在重新分配 mylString3 ,因此无论如何这将是一个新值。
-
@AndersKjeldsen 我重新分配 mylString3 就像您可以分配普通字符串一样。我是具有新价值的 k。
-
case1 可以使用隐式转换运算符。情况2是可能的。案例3是....好的。它的重新分配打破了这一点。一旦你分配了
myString3 = ......,它就对预先分配的最大值一无所知。您认为var myString3 = new lString(myString1 + myString2, 20)是一种可接受的解决方法吗? -
你不能用它来扩展字符串,字符串是一个密封的类,扩展至少是你能做的或者只是一个接口,从这里做所有的字符串操作:referencesource.microsoft.com/#mscorlib/system/string.cs跨度>
标签: c# string class oop object