none
[求助]如何自动强制转换类型。。 RRS feed

  • 问题

  • int i = 8;

    double j = 1.23;

    string s = "int";

    i = (????)j;//这里是关键,s要怎样才能变成真正的int ,进行转换。。

    问题是。。。如何将j转换成s

     


    2011年6月6日 8:38

答案

  • 您好:)

    就我所知,根据你的要求是无法做出的.因为你要转化一个string里边的内容(把string的值当成是转化条件).恐怕办不到.

    我写了一个反射的方法,不过转化的条件是(小数点后面必须是0).

    [示例代码]

     int i = 8;

                double j = 1.00;

                string s = "System.Int32";

                object obj = Type.GetType(s).GetMethod("Parse", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string),typeof(NumberStyles) }, null).Invoke(i, new object[] { j.ToString(),NumberStyles.AllowDecimalPoint });

                i = (int)obj;

                Console.WriteLine(i);

    主要使用了(Parse的第二个重载函数,具体参考:)

    http://msdn.microsoft.com/zh-cn/library/c09yxbyt.aspx


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 tssing 2011年6月7日 4:29
    2011年6月7日 3:00
    版主

全部回复

  • 您好:)

    就我所知,根据你的要求是无法做出的.因为你要转化一个string里边的内容(把string的值当成是转化条件).恐怕办不到.

    我写了一个反射的方法,不过转化的条件是(小数点后面必须是0).

    [示例代码]

     int i = 8;

                double j = 1.00;

                string s = "System.Int32";

                object obj = Type.GetType(s).GetMethod("Parse", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, new Type[] { typeof(string),typeof(NumberStyles) }, null).Invoke(i, new object[] { j.ToString(),NumberStyles.AllowDecimalPoint });

                i = (int)obj;

                Console.WriteLine(i);

    主要使用了(Parse的第二个重载函数,具体参考:)

    http://msdn.microsoft.com/zh-cn/library/c09yxbyt.aspx


    如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
    下载MSDN桌面工具(Vista,Win7)
    下载Technet桌面小工具(Vista,Win7)
    慈善点击,点击此处
    • 已标记为答案 tssing 2011年6月7日 4:29
    2011年6月7日 3:00
    版主
  • 我真的记得有此功能,在这论坛上看过。。。

    好久好久了,,,就是找不到了。。。


    带着责任感生活,尝试为这个世界带来点有意义的事情,为更高尚的事情做点贡献,这样你会发现生活更加有意义,生命不再枯燥,需要我们去做的事情很多。
    2011年6月10日 15:44