C#:显式typeconversion

时间:2016-02-21 18:58:46

标签: c#

我目前正努力寻找练习的解决方案。 如何修改ClassA以便第二部分中的显式类型转换成为可能?

yield from

2 个答案:

答案 0 :(得分:-1)

ClassA定义中的此类内容应该有效:

public static explicit operator int(ClassA a)
{
    return a.MyValue;
}

public static explicit operator string(ClassA a)
{
    return a.MyText;
}

(我实际上无法记住此案例是否需要implicitexplicit,并且目前无法对其进行测试。值得测试两者你的需求。)

虽然为什么你想这样做有点奇怪,而不是直接抓住这些公共价值:

int x = myObject.MyValue;
string str = myObject.MyText;

答案 1 :(得分:-2)

您定义了一个显式转换。

这里的技巧是EXPLICIT关键字。

https://msdn.microsoft.com/en-us/library/xhbhezf4.aspx

有这方面的例子。

基本上:类必须在for ...中实现一个stateic显式运算符。

// Must be defined inside a class called Fahrenheit:
public static explicit operator Celsius(Fahrenheit fahr)
{
    return new Celsius((5.0f / 9.0f) * (fahr.degrees - 32));
}