首页新闻找找看学习计划

c#中如何让定义的两个类实现自动类型兼容并转换?

0
悬赏园豆:20 [已关闭问题] 关闭于 2017-07-14 08:15

比如 int a = 1; long b=1;

代码: b = a; 是合法的,虽然a和b类型不同,但不会报错。

 

如何实现让如下代码合法不报错:

public class c1{...};

public class c2{...};

c1 a=new c2();

沧海一杰的主页 沧海一杰 | 初学一级 | 园豆:48
提问于:2016-02-26 15:26
< >
分享
所有回答(5)
0

重载赋值运算符.

吴瑞祥 | 园豆:28736 (高人七级) | 2016-02-26 15:31

高手,我查查看,在C#中还没有重载过这个东西呢

支持(0) 反对(0) 沧海一杰 | 园豆:48 (初学一级) | 2016-02-26 15:50

@沧海一杰: C#不允许重载这个运算符。

支持(0) 反对(0) 沧海一杰 | 园豆:48 (初学一级) | 2016-02-26 16:08

@沧海一杰: 居然真的不能重载赋赋值运算符..我去.那你只能重载类型转换运算符了.在赋值的时候转换下.

支持(0) 反对(0) 吴瑞祥 | 园豆:28736 (高人七级) | 2016-02-26 18:52
0

让c2继承c1

public class c2:c1{…} 

德年 | 园豆:805 (小虾三级) | 2016-02-26 15:32

不行的,我只能控制其中的一个类的定义,别一个已经封装好了。

支持(0) 反对(0) 沧海一杰 | 园豆:48 (初学一级) | 2016-02-26 15:54
0

c2 a2=new c2();

c1 a1=new c1(){a=a2.a,b=a2.b...}

刘宏玺 | 园豆:14004 (专家六级) | 2016-02-26 16:06

看不懂

支持(0) 反对(0) 沧海一杰 | 园豆:48 (初学一级) | 2016-02-26 16:09

@沧海一杰: 就是把C2的属性手打赋值给C1

支持(0) 反对(0) 刘宏玺 | 园豆:14004 (专家六级) | 2016-02-26 16:10
0

普通的情况下,AutoMapper能解决。

特殊的情况题主没有说明,无法知道还有啥特别需求。

爱编程的大叔 | 园豆:30089 (高人七级) | 2016-02-27 10:57
0

可以使用 implicit

https://msdn.microsoft.com/zh-cn/library/z5z9kes2.aspx

长蘑菇星人 | 园豆:1822 (小虾三级) | 2016-02-27 12:08

对呀,我就记得在哪儿看过这个功能。

支持(0) 反对(0) 沧海一杰 | 园豆:48 (初学一级) | 2016-03-02 11:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册