我希望能够做的是让struct返回一个变量,而不必通过它的属性来指定它。我可能不正确地说这个问题所以我会给出一个例子(当然这是失败的)。对于任何混淆或不一致的事情表示歉意,但这是我想要实现的,不知道如何做到这一点,甚至不去寻找它。
struct theString{
public string my_String;
}
theString myString = new theString();
string currentMethod = myString.my_String;
string how_I_would_like_it = myString;
提前感谢您提供任何/所有帮助。
[edit]属性字符串仅用于示例。你可以用你喜欢的任何东西替换字符串,无论是int,object,webhttprequest等......
问题是当我做字符串how_I_would_like_it = myString;它不会将my_String变量赋值给how_I_would_like_it,也不能隐式转换错误。
答案 0 :(得分:4)
你可以这样做:
public class MyString
{
public static implicit operator string(MyString ms)
{
return "ploeh";
}
}
以下单元测试成功:
[TestMethod]
public void Test5()
{
MyString myString = new MyString();
string s = myString;
Assert.AreEqual("ploeh", s);
}
一般情况下,我不认为这是良好的API设计的标志,因为我更喜欢显而易见而不是惊喜 ......但话说回来,我不知道上下文问题......
答案 1 :(得分:0)
如果只想返回一个字符串值,可以尝试重载struct的ToString方法:
public override string ToString()
{
return my_String;
}