我想覆盖 - MyString类的运算符。它应该在字符串中找到最短的单词。这是代码:
class MyString
{
private string data;
public string Data
{
get { return data; }
set { data = value; }
}
public MyString(string s)
{
Data = s;
}
public MyString(MyString s)
{
Data = s.Data;
}
public static MyString operator --(MyString s)
{
var words = s.Data.Split();
int l = 99999, ind = 0;
for (int i = 0; i < words.Length; i++)
{
if (words[i].Length < l)
{
ind = i;
l = words[i].Length;
}
}
MyString result = new MyString(words[ind]);
return result;
}
}
当我尝试使用它时:
MyString s1, shortest;
s1 = new MyString("one two three");
shortest = s1--;
Console.WriteLine(shortest.Data);
它返回“一二三”而不是“一”。我该如何解决?
答案 0 :(得分:3)
var x = foo--;
发布 -decrement,即类似于:
var x = foo;
foo--;
你可能希望预先 - 减少,即
var x = --foo;
类似于:
foo--;
var x = foo;
无论哪种方式:它都会不恰当地更改foo
,这可能是您不想要的。如果你这样做:
shortest = --s1;
Console.WriteLine(shortest.Data);
Console.WriteLine(s1.Data);
您现在看到s1.Data
<{1}}。
我建议改为:
"one"