我的代码参考了MSDN的一篇文章:http://msdn.microsoft.com/zh-cn/library/zk2z37d3.aspx 代码在Win7 + VS2010下测试通过,调试结果可以通过单步执行来查看: using System; using System.Collections.Generic; using System.Text; namespace 结构间的转换 { struct Struct1 { private int i; //构造函数 public Struct1(int value) { this.i = value; } //隐式 int 转 Struct1 static public implicit operator Struct1(int value) { return new Struct1(value); } //显式 Struct1 转 int static public explicit operator int(Struct1 S1) { return S1.i; } //隐式 Struct2 转 Struct1 static public implicit operator Struct1(Struct2 S2) { return new Struct1(S2); } } struct Struct2 { private int i; //构造函数 public Struct2(int value) { this.i = value; } //显式 int 转 Struct2 static public explicit operator Struct2(int value) { return new Struct2(value); } //隐式 Struct2 转 int static public implicit operator int(Struct2 S2) { return S2.i; } //显式 Struct1 转 Struct2 static public explicit operator Struct2(Struct1 S1) { return new Struct2((int)S1); } } class Program { static void Main(string[] args) { int i; Struct1 S1; Struct2 S2; S1 = 10; //隐式 int 转 Struct1 i = (int)S1; //显式 Struct1 转 int S2 = (Struct2)i; //显式 int 转 Struct2 S1 = S2; //隐式 Struct2 转 Struct1 i = S2; //隐式 Struct2 转 int S2 = (Struct2)S1; //显式 Struct1 转 Struct2 //其中上面的隐式转换也可以使用显式表示,如下所示: //但显式转换不能使用隐式进行转换 S1 = (Struct1)i; S1 = (Struct1)S2; //S2 = S1; //错误,没有创建隐式 Struct1 转 Struct2 的自动转换 } } }