我有一个看起来像这样的课程
class MyClass
{
string myData;
//.....
//other fields
public static implicit operator string(MyClass c)
{
return c.myData;
}
}
现在,当我将类的值赋给字符串时,我得到myData
的值。但是在microsoft的example中,为了从MyClass
到string
进行隐式对流,我必须在静态方法中创建MyClass
的新实例。我不想这样做,而是想简单地将字符串的值赋给myData
字段。
这可以用c#做,如果是,我该怎么做?
答案 0 :(得分:3)
听起来没有直接的解决方案来满足您的需求。我建议尝试运算符重载,这将允许执行一些我认为你需要的东西,理解=(相等)不能重载可能你想尝试+ =你可以在这里找到更多的帮助:
http://msdn.microsoft.com/en-us/library/6fbs5e2h.aspx
这是一个示例版本:
namespace ConsoleApplication1
{
public struct MyClass
{
public string MyData {get;set;}
// Constructor.
public MyClass(string obj1):this()
{
this.MyData = obj1;
}
public static MyClass operator +(MyClass c1, string var3)
{
return new MyClass(var3);
}
public override string ToString()
{
return (System.String.Format("{0} ", this.MyData));
}
}
[System.Runtime.InteropServices.GuidAttribute("D36900FE-8902-4ED8-B961-DE5B3F3273AC")]
class Program
{
static void Main(string[] args)
{
MyClass obj1 = new MyClass();
obj1 += "Hello";
Console.ReadKey();
}
}
}