求一段VB代码的C#表达
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode, Pack:=1, Size:=1072)> _
Structure tStatus
Public error_code, msg As Int16
Public percent, file_size, elapsed_time As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
Public file_name, opoen_file_name As String
Public current_packet, total_packets, total_packet256s As Int32
End Structure
主要是看不懂<>内的东西。翻译的同时烦请解释一下意思。谢了
问题点数:20、回复次数:4Top
1 楼mumuliang(CR苏杭)回复于 2006-02-23 16:04:41 得分 0
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode, Pack=1, Size=1072)]
public struct tStatus
{
public short error_code, msg ;
public int percent, file_size, elapsed_time;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=260)]
public string file_name, open_file_name;
public int current_packet, total_packets, total_packet256s;
}Top
2 楼Tony8002003(冷)回复于 2006-02-23 16:20:18 得分 15
StructLayout:平台调用示例说明如何调用从非托管库导出的函数:如何声明不同的类型;如何使用可用的属性来修改默认行为;如何在需要时使用 Marshal 类的方法;以及垃圾回收和线程的哪些方面会影响结果。
MarshalAs:通过向程序元素(如属性、方法、事件、类和程序集)添加特性块来应用特性。特性块由尖括号(“< >”)组成,其中包含逗号分隔的特性声明列表。特性声明由可选特性修饰符(如 Module 或 Assembly)、特性名称、所需的定位参数列表(可能重载)和可选命名参数列表组成。必须将带有修饰符的特性放在源文件顶部的特性部分中
转换如下:
Structure tStatus
Public error_code, msg As Int16
Public percent, file_size, elapsed_time As Int32
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
Public file_name, opoen_file_name As String
Public current_packet, total_packets, total_packet256s As Int32
End Structure
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode, Pack=1, Size=1072)] public struct tStatus
{
int error_code, msg ;
int percent, file_size, elapsed_time;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=260)]
string file_name, open_file_name;
int current_packet, total_packets, total_packet256s;
}
Top
3 楼ilove8(千里|你去哪里了,我等了你很久了!)回复于 2006-02-23 16:28:10 得分 5
<StructLayout(LayoutKind.SequentialCharSet=CharSet.Unicode, Pack=1, Size=1072)> _
Public Structure tStatus
Public error_code As Short
Public msg As Short
Public percent As Integer
Public file_size As Integer
Public elapsed_time As Integer
<MarshalAs(UnmanagedType.ByValTStrSizeConst=260)> _
Public file_name As String
<MarshalAs(UnmanagedType.ByValTStrSizeConst=260)> _
Public open_file_name As String
Public current_packet As Integer
Public total_packets As Integer
Public total_packet256s As Integer
End StructureTop
4 楼mumuliang(CR苏杭)回复于 2006-03-01 09:49:03 得分 0
楼上的回帖不看贴Top




