以下代码中,第一种转换没问题,第二种用扩展方法转换却不成功,请大牛们不吝赐教,谢谢!public static class AAAA
{
public static double ToDouble(this object v)
{
return (double)v;
}
}public enum MMMM
{
M1 = 1,
M2 = 2
}class Program
{
static void Main(string[] args)
{
MMMM aaa = MMMM.M1;
object bbb = aaa; Console.WriteLine((double)(MMMM)bbb); Console.WriteLine(((MMMM)bbb).ToDouble()); Console.Read();
}
} C# 扩张方法 类型转换 C#扩张方法的类型转换出错类型转换扩展方法
{
public static double ToDouble(this object v)
{
return (double)v;
}
}public enum MMMM
{
M1 = 1,
M2 = 2
}class Program
{
static void Main(string[] args)
{
MMMM aaa = MMMM.M1;
object bbb = aaa; Console.WriteLine((double)(MMMM)bbb); Console.WriteLine(((MMMM)bbb).ToDouble()); Console.Read();
}
} C# 扩张方法 类型转换 C#扩张方法的类型转换出错类型转换扩展方法
解决方案 »
- winform 问题
- 自定义的类的集合IList<MyObject> 想使用Contains方法,需要实现什么接口呢
- 查询后如何使ComboBox还原?
- 用StreamReader从文本文件读取数据,为什么遇到中文都是乱码?请指教!
- C# winform 饼图
- 请问大家有 ReportControl 做线形图的JS文件吗
- 请问Visual Studio Tools for the Microsoft Office System
- 多窗体界面问题.
- 项目发布问题
- 如何取得XML中的值
- C#读取低版本EXCEL问题
- c# Winform有能支持IE,Firefox,Chrome,Safari浏览器的控件吗?
{
return Convert.ToDouble(v);//这样就可以
}
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
public static class AAAA
{
public static double ToDouble(this object v)
{
if (v is Enum)
return (double)(int)v;
return (double)v;
}
} public enum MMMM
{
M1 = 1,
M2 = 2
} class Program
{
static void Main(string[] args)
{
MMMM aaa = MMMM.M1;
object bbb = aaa; Console.WriteLine((double)(MMMM)bbb); Console.WriteLine(((MMMM)bbb).ToDouble()); Console.Read();
}
}
}
而如果是object,double的强制转换无法匹配object类型。
(double)obj;//这样不行
Convert.ToDouble(obj);//这样就可以
这就是问题所在