C#:Struct返回变量没有属性

时间:2009-12-15 12:41:52

标签: c#

我希望能够做的是让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,也不能隐式转换错误。

2 个答案:

答案 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;
}