T
takashiki
Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]第二个问题:[/blue]
很遗憾,C#无法编译成本地代码。但是可以采用第三方软件将.NET程序集加克成本地代码,比如MaxtoCode之类的。
第三个问题:
这个其实是很简单的,因为et已知了。只要采用Enum类的静态方法GetNames(), GetValues()就可以。
下面给个测试程序:foreach(object etEnum in Enum.GetValues(et)){
MessageBox.Show(etEnum.toString());
}
第一个问题:
因为在托管代码中,指针总是会被GC所移动的,除非使用了fixed关键字将指针固定。这个其实是可以实现的,但是有一点,声明字符串就不能使用string类型了,而必须采用char*。如果对这个不懂的话,那么请好好复习C语言。总指挥由大队对来来回回的转换,烦死人了。还不如采用属性的方式,然后通过反射调用(此时内存地址其实已经发生改变了,好像不符合题目要求)。
最狠的招式:采用共享内存。GC再怎么移动内存也移动不了它!就是太麻烦了。
下面举个例子,我只使用了这个字符串的第一个字符,因为string<-->char*太麻烦了,搂知自己想办法。
fixed(char* s=new char[1]){
s[0]='H';
char* ps = (char*)&s[0]; //看看C语言的书,引用就是这么写的。
MessageBox.Show(ps[0].ToString());
}
很遗憾,C#无法编译成本地代码。但是可以采用第三方软件将.NET程序集加克成本地代码,比如MaxtoCode之类的。
第三个问题:
这个其实是很简单的,因为et已知了。只要采用Enum类的静态方法GetNames(), GetValues()就可以。
下面给个测试程序:foreach(object etEnum in Enum.GetValues(et)){
MessageBox.Show(etEnum.toString());
}
第一个问题:
因为在托管代码中,指针总是会被GC所移动的,除非使用了fixed关键字将指针固定。这个其实是可以实现的,但是有一点,声明字符串就不能使用string类型了,而必须采用char*。如果对这个不懂的话,那么请好好复习C语言。总指挥由大队对来来回回的转换,烦死人了。还不如采用属性的方式,然后通过反射调用(此时内存地址其实已经发生改变了,好像不符合题目要求)。
最狠的招式:采用共享内存。GC再怎么移动内存也移动不了它!就是太麻烦了。
下面举个例子,我只使用了这个字符串的第一个字符,因为string<-->char*太麻烦了,搂知自己想办法。
fixed(char* s=new char[1]){
s[0]='H';
char* ps = (char*)&s[0]; //看看C语言的书,引用就是这么写的。
MessageBox.Show(ps[0].ToString());
}