MyString类中的c#重写运算符返回相同的对象
我想重写MyString类的--operator。它应该在字符串中找到最短的单词。以下是代码:MyString类中的c#重写运算符返回相同的对象,c#,string,overriding,C#,String,Overriding,我想重写MyString类的--operator。它应该在字符串中找到最短的单词。以下是代码: class MyString { private string data; public string Data { get { return data; } set { data = value; } } public MyString(string s) { Data = s; }
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;
}
}
它返回“一二三”而不是“一”。我怎样才能修好它
var x = foo--;
是后减量,即类似于:
var x = foo;
foo--;
foo--;
var x = foo;
您可能需要预减量,即
var x = --foo;
这类似于:
var x = foo;
foo--;
foo--;
var x = foo;
无论哪种方式:它都会不适当地更改foo
,这可能是您不想要的。如果您这样做:
shortest = --s1;
Console.WriteLine(shortest.Data);
Console.WriteLine(s1.Data);
您将看到s1.Data
现在也是了“一”
相反,我建议:
shortest = s1.GetShortestWord();
Console.WriteLine(shortest.Data);
是后减量,即类似于:
var x = foo;
foo--;
foo--;
var x = foo;
您可能需要预减量,即
var x = --foo;
这类似于:
var x = foo;
foo--;
foo--;
var x = foo;
无论哪种方式:它都会不适当地更改foo
,这可能是您不想要的。如果您这样做:
shortest = --s1;
Console.WriteLine(shortest.Data);
Console.WriteLine(s1.Data);
您将看到s1.Data
现在也是了“一”
相反,我建议:
shortest = s1.GetShortestWord();
Console.WriteLine(shortest.Data);
这是一个可怕的使用
--
操作符,顺便说一句,上帝的爱,不要这样做。为什么会有人知道使用与你想让它做什么无关的操作符?另外,如果您的目标是“查找字符串中最短的单词”,请编写一个名为findtheshortword()
的方法,并使用我知道但任务要求使用的方法it@st_dec如果学校给了你这个任务,把你的钱拿回来。这是--
接线员的可怕用法,顺便说一句,上帝的爱,不要这样做。为什么会有人知道使用与你想让它做什么无关的操作符?另外,如果您的目标是“查找字符串中最短的单词”,请编写一个名为findtheshortword()
的方法,并使用我知道但任务要求使用的方法it@st_dec如果学校给你这个任务,把你的钱拿回来。