class1 转化为 CLASS2
class Class1
{
public int a;
public int b;
}
与
class Class2
{
public int a;
public int b;
}
结构一样,能不能互相转换,怎么转
问题点数:20、回复次数:15Top
1 楼mslvcat()回复于 2006-07-04 17:00:37 得分 0
可以自定义转换的。
建议看看msdn上的 operator 重载Top
2 楼lucy198204(出来混,总是要还的)回复于 2006-07-04 17:11:29 得分 0
不明白Top
3 楼veryhappy(wx.net)回复于 2006-07-04 17:13:55 得分 0
做一个继承,就可以强制转换了Top
4 楼mslvcat()回复于 2006-07-04 17:26:47 得分 20
class c1
{
public int a1;
public int a2;
// define operator double
public static implicit operator c2(c1 temp)
{
c2 c2Object = new c2();
c2Object.a1 = temp.a1;
c2Object.a2 = temp.a2;
return c2Object;
}
}
class c2
{
public int a1;
public int a2;
// define operator double
public static implicit operator c1(c2 temp)
{
c1 c1Object = new c1();
c1Object.a1 = temp.a1;
c1Object.a2 = temp.a2;
return c1Object;
}
}Top
5 楼mslvcat()回复于 2006-07-04 17:28:08 得分 0
定义上边两个类后可以执行:
c1 cc1 = new c1();
cc1.a1 = 10;
cc1.a2 = 20;
c2 cc2 = cc1;
这时cc2.a1 = 10 cc2.a2 = 20Top
6 楼mslvcat()回复于 2006-07-04 17:30:43 得分 0
这是隐式转换。
将关键字implicit 变成 explicit就是显示转换。
即 c2 cc2 = cc1报错。 c2 cc2 = (c2)c1 正确
Top
7 楼mmens(快乐中前行!)回复于 2006-07-04 17:35:44 得分 0
不可以显示转换。可以模仿.net中的copy方法。
也就是通过给类变量赋值来转换。Top
8 楼lucy198204(出来混,总是要还的)回复于 2006-07-04 17:36:53 得分 0
谢谢.好了,能不能再问一个,WEBSERVICE里的一个自定义类,在WINFORM中怎么引用Top
9 楼mslvcat()回复于 2006-07-04 17:43:02 得分 0
直接在winform的引用上点右键,添加web引用即可!Top
10 楼lucy198204(出来混,总是要还的)回复于 2006-07-04 17:48:17 得分 0
这样添加只有SERVICE 一个类可见
自定义的类看不见Top
11 楼mslvcat()回复于 2006-07-04 17:59:52 得分 0
应该就是这样。
你可以把自定类中需要暴露的内容放到service类里Top
12 楼diandian82(点点(nothing))回复于 2006-07-04 18:15:27 得分 0
系统是无法转换的,不管是显示的还是隐士的,因为系统认为那根本是两个没有任何关系的类,即使它们的结构是一样的。除非你自己定义转换方法,比如上面的重载转换操作运算符。Top
13 楼lucy198204(出来混,总是要还的)回复于 2006-07-04 18:28:10 得分 0
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
public Service () {
//InitializeComponent();
}
[WebMethod]
public myclass HelloWorld() {
myclass m = new myclass();
m.a = "001";
m.b = "lucy";
return m ;
}
}
public class myclass //: System.Web.Services.WebService
{
public string a;
public string b;
public string add(int a, int b)
{
return (a + b).ToString();
}
}
为什么在WINFORM 里只能用到MYCLASS.A ,MYCLASS.B 而不能用到MYCLASS.ADD
Top
14 楼lucy198204(出来混,总是要还的)回复于 2006-07-04 19:25:21 得分 0
好像是应该先序列化,但是怎么做呢,Top
15 楼lucy198204(出来混,总是要还的)回复于 2006-07-05 09:35:38 得分 0
?Top




