是否可以将字符串转换为我自己的类型?

时间:2011-11-15 14:15:27

标签: c# .net casting custom-type

public class Currency{
    private Code {get;set;}
    public Currency(string code){
      this.Code = code;
    }
    //more methods here
}

我希望能够使我的对象可投射

string curr = "USD";
Currency myType = (Currency)curr;

我知道我可以使用构造函数来完成它,但是我在不需要初始化对象的情况下使用了我需要的地方......

我也认为生病需要像FromString()这样的功能来做这件事 感谢。

4 个答案:

答案 0 :(得分:6)

是的,只需添加explicit cast operator

public class Currency {
    private readonly string code;
    public string Code { get { return this.code; } }
    public Currency(string code) {
        this.code = code;
    }
    //more methods here

    public static explicit operator Currency(string code) {
        return new Currency(code);
    }
}

现在你可以说:

string curr = "USD";
Currency myType = (Currency)curr;

答案 1 :(得分:4)

将此方法添加到您的Currency类:

public static explicit operator Currency(String input) 
{
    return new Currency(input);
}

并称之为:

Currency cur = (Currency)"USD";

答案 2 :(得分:3)

如果您为自己的类型创建自己的强制转换运算符,则可以实现此目的。

查看implicitexplicit个关键字。

(在这种情况下,我更喜欢显式演员)。

答案 3 :(得分:0)

我相信这个运算符可以满足您的需求(作为Currency类的一部分):

public static explicit operator Currency(stringvalue){
    return new Currency(value);
}