永发信息网

C#两个自定义类型的变量怎么互相转换

答案:4  悬赏:30  手机版
解决时间 2021-02-23 06:08
C#两个自定义类型的变量怎么互相转换
最佳答案
子类可以隐式转换为父类。
父类不能隐式转换为子类。

你可以自定义类型转换。

===========================================
本来不想在这里多解释了。不过既然有同学看不懂,那么我还是简单介绍一下C#的基础知识之一:Operators Overloading。
中文叫运算符重载,我相信不少同学知道这个特性,对于重载+,-,==,!=等运算符或许还在学习的时候做过例子。
普通的括号是不能被overload的,但是作为类型强制转换的运算符却是可以被重载的。
打个比方说,ClassA和ClassB毫无关联,所以当你如下写:
ClassA ca = new ClassA();
ClassB cb = ca;
肯定会连编译都通不过,因为在类型检查的时候就报错了。
如果你将第二行改为
ClassB cb = (ClassB)ca;
同样不会通过编译。
但是我们可以重载隐式转换来使之可以通过。
例子我也就不举了,我以MSDN的例子来说明:
===================
class Celsius {
public Celsius(float temp) {
degrees = temp;
}
public static explicit operator Fahrenheit(Celsius c) {
return new Fahrenheit((9.0f / 5.0f) * c.degrees + 32);
}
public float Degrees {
get { return degrees; }
}
private float degrees;
}

class Fahrenheit {
public Fahrenheit(float temp) {
degrees = temp;
}
public static explicit operator Celsius(Fahrenheit f) {
return new Celsius((5.0f / 9.0f) * (f.degrees - 32));
}
public float Degrees {
get { return degrees; }
}
private float degrees;
}

class MainClass {
static void Main() {
Fahrenheit f = new Fahrenheit(100.0f);
Console.Write("{0} fahrenheit", f.Degrees);
Celsius c = (Celsius)f;
Console.Write(" = {0} celsius", c.Degrees);
Fahrenheit f2 = (Fahrenheit)c;
Console.WriteLine(" = {0} fahrenheit", f2.Degrees);
}
}
全部回答
两个类如果不是同一种自定义类型的类的话,就不能进行转换会出错。
不过类中的值给以付给第二个类。例如 定义了两个类
Book book =new Book();BorrowInfo borrowInfo=new BorrowInfo() ; 其中book有ID属性是字符串窜类型 borrowInfo也有一个NameID属性类型为字符串。那么可以进行book.ID= borrowInfo.NameID;操作,但是不能进行
Book book = new Book();
BorrowInfo borrowInfo = (BorrowInfo)book ;
这样的操作。
我想 1# 说的不对
“子类可以隐式转换为父类。父类不能隐式转换为子类。你可以自定义类型转换。”
我只听说过 子类继承父类。父类是子类的通用,而并没有听过“自定义类型转换<真不理解你说的这个是什么意思?这和 变量转换有什么关系?>”

楼主的
BorrowInfo borrowInfo = Book book;
应该是报错的!
你可以试验下这样写
Book book = new Book();
BorrowInfo borrowInfo =(BorrowInfo)book;我想 你的 Book 和BorrowInfo 里面的字段应该有相互依赖或者相同的字段之类的?你最好把2个类中的字段说明下!
你可以写成
Book book = new Book();
BorrowInfo borrowInfo = (BorrowInfo)book ;
看有用没~~~
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
车载MP3怎么做音频输出接口
中国电信同德围电信营业厅在哪里啊,我有事要
为什么单反拍出的照片总是灰蒙蒙的,还没有卡
NDS上的怪医黑杰克有没有中文版?
泌阳到汝阳有多少公里
秋天的大葱冬天用花盆栽上人们吃有毒吗?
塘上村在哪里啊,我有事要去这个地方
媚影彩妆地址有知道的么?有点事想过去!
武汉软件著作权办理(登记)/武汉软件版权登
比亚迪s6空调散热器多少钱
东方明珠塔门票多少钱
蓉一品零食量贩会员店东光街NO.19我想知道这
电影里有个叫李蒙的还有一个叫小桃的
空间权限怎么取消
在网上买到一双假耐克,卖家一定说是真的,要
推荐资讯
亨亨便利超市地址在什么地方,想过去办事
2017自愿离婚协议怎么写
PPT的变体功能什么情况下没有效果
簇桥街道双凤村文化活动室怎么去啊,有知道地
诛仙中万人往对张小凡在茶摊说正道与魔道的那
阅读材料,结合所学知识回答问题。【材料一】
新疆警官高等专科学校米东校区地址有知道的么
“片言之赐,皆我师也”是什么意思
CBD有天然乳胶床垫吗,是多少钱一张?
我在大浪路口,想去东莞常平的桥头村要怎么坐
玻璃一抹即净对汽车表面有影响吗?
榆祁高速公路/X332(路口)地址在什么地方,想
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?