189 8069 5689

为什么用户定义的转换必须是转换成封闭类型或从封闭类型转换

这篇文章主要介绍“为什么用户定义的转换必须是转换成封闭类型或从封闭类型转换”,在日常操作中,相信很多人在为什么用户定义的转换必须是转换成封闭类型或从封闭类型转换问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什么用户定义的转换必须是转换成封闭类型或从封闭类型转换”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在定陶等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站设计 网站设计制作专业公司,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,外贸营销网站建设,定陶网站建设费用合理。

在做类型隐式转换的时候碰到这一报错信息“用户定义的转换必须是转换成封闭类型,或者从封闭类型转换”:

声明大致如下:

有2个类:A、B,其中类A和类B结构完全相同,只是类B属于第三方;

在类C的某一个方法中需要返回一个List,如:

public List Func(){
       List list = new List;
       .....       return list;
}

这个时候因为返回类型不同而会报错;

在类A中进行隐式转换

class A{
      ....      public static implicit operator List(List value)
      {
              ...
      }
      .....
}

这个时候会报“用户定义的转换必须是转换成封闭类型,或者从封闭类型转换”的错误;
查阅MSDN,在类型转换一节中有这么2句说明:
1.操作数必须是封闭类型
2.类A到类B的类型转换定义不能在类C中进行(即2个类的转换不能在第3个类中定义)
一开始一直认为是第一点的原因造成的编译错误,也误认为所谓的封闭类型,就一定要是类/结构,不能是集合对象,后来发现造成这一错误的原因是第二点,因为当我将类型转换的定义更改为:

class A{
      ....      public static implicit operator A(List value)  {
              ...
      }
      .....
}


此时编译通过,也就排除了第一点;
原来对于编译器来说,class A是一个类型,List
也是一个类型,List亦是一个类型,那么对于List类型隐式转换为List类型的操作自然不能在class A中进行,符合第二点;


补充:
如果要在项目中,有方法:

public List Func(){
       List list = new List;
       .....       return list;
}


非要让这个list转换成List
怎么做?
其实方法也很简单,既然List的隐式转换不能做,那么在返回的时候将list中的元素逐个转换即可:
隐式转换定义:

class A{
      ....      public static implicit operator A(B value)  {
              ...
      }
      .....
}


方法定义:

public List Func(){
       List list = new List;
       .....       return list.Select(p=>(B)p).ToList();
}

到此,关于“为什么用户定义的转换必须是转换成封闭类型或从封闭类型转换”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


本文名称:为什么用户定义的转换必须是转换成封闭类型或从封闭类型转换
本文网址:
http://cdxtjz.cn/article/jdjdhs.html

联系我们

您好HELLO!
感谢您来到成都网站建设公司,若您有合作意向,请您为我们留言或使用以下方式联系我们, 我们将尽快给你回复,并为您提供真诚的设计服务,谢谢。
  • 电话:028- 86922220 18980695689
  • 商务合作邮箱:631063699@qq.com
  • 合作QQ: 532337155
  • 成都网站设计地址:成都市青羊区锣锅巷31号五金站写字楼6楼

小谭建站工作室

成都小谭网站建设公司拥有多年以上互联网从业经验的团队,始终保持务实的风格,以"帮助客户成功"为已任,专注于提供对客户有价值的服务。 我们已为众企业及上市公司提供专业的网站建设服务。我们不只是一家网站建设的网络公司;我们对营销、技术、管理都有自己独特见解,小谭建站采取“创意+综合+营销”一体化的方式为您提供更专业的服务!

小谭观点

相对传统的成都网站建设公司而言,小谭是互联网中的网站品牌策划,我们精于企业品牌与互联网相结合的整体战略服务。
我们始终认为,网站必须注入企业基因,真正使网站成为企业vi的一部分,让整个网站品牌策划体系变的深入而持久。