gpt4 book ai didi

c# - 如何在不创建新实例的情况下进行隐式转换?

转载 作者:行者123 更新时间:2023-11-30 22:10:26 26 4
gpt4 key购买 nike

我有一个看起来像这样的类

class MyClass
{
string myData;

//.....
//other fields

public static implicit operator string(MyClass c)
{
return c.myData;
}


}

现在,当我将类的值赋给一个字符串时,我得到了 myData 的值。但是在微软的example ,要进行从 MyClassstring 的隐式对流,我必须在静态方法中创建 MyClass 的新实例。我不想这样做,而是想简单地将字符串的值分配给 myData 字段。

这可以用 C# 实现吗?如果可以,我该怎么做?

最佳答案

听起来您的需要没有直接的解决方案。我建议尝试运算符重载,这将允许执行一些我认为你需要的事情,因为理解 =(等于)不能重载可能你想尝试 += 你可以在这里找到额外的帮助:

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();
}
}
}

关于c# - 如何在不创建新实例的情况下进行隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20825893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com