C# 结构体翻译,有加分(C#新手问题,有Delphi定义对照)

来源:百度知道 编辑:UC知道 时间:2024/06/30 17:05:00
Delphi里的结构体定义是这样
Type
TByteInt = Array[0..2] of Byte;
TCGUser = packed record
Code: TByteInt;
Q: Byte;
PassWord: TByteInt;
Name: Array[0..9] of Char;
end;

C#里面应该如何定义?
还有Delphi可以这样定义结构体,C#里是否可行?
TCGUserInfo = packed record
UserCount: TByteInt;
CGUsers: Array of TCGUser; //这个是动态结构体数组
end;
TO:rodericksu
建立一个类是知道的,使用结构体是因为需要一个明确的类型宽度,为的是加载一个这样结构的内存流文件,Delphi可以很方便的定义这些类型,使用TMemoryStream可以方便实现,但C#中遇到了麻烦
最近比较忙,没过来看看,如果你明白我的意思,帮写一个简单的例子也行,到时加50分。
如果很忙不方便,没关系,如果没有新的回答这分也是你的,过两天就结束问题,谢谢你的回答
--------
C#里FileStream,可以直接将内存流文件读入到一个byte[],但是对一个一维数组的操作肯定不方便,如何将内存流文件Read到一个结构体中。

希望以下方法可以供你参考,请使用VS2008查看(稍做改动05也可以)
---------------------------------------------------------------------
public class TCGUser
{
public const int DataLength = 17;

private byte[] _data;
public byte[] Data
{
get { return _data; }
set
{
Debug.Assert(value.Length == DataLength, string.Format("Data must be an array of {0} bytes", DataLength));
_data = value;
for (var i = 0; i < 3; i++) Code[i] = value[i];
Q = value[3];
for (var i = 0; i < 3; i++) Password[i] = value[i + 4];
for (var i = 0; i < 10; i++) Name[i] = Convert.ToChar(value[i + 7]);
}
}

public byte[] Code { get; private set; }
public byte Q { get; private set; }
public byte[] Password { get; private set; }
public char[] Name { get; private set; }

public TCGUser()
{
Data = new byte[DataLength];
Code = new byte[3];
Password = new byte[