# ArchetypeChunk<T1, ...>

|Class/Struct Info|
|:--------------------------------------------------------------------------------------------------------------------------|
|public readonly struct ArchetypeChunk<T1, ...>where T1 : struct 表示包含指定组件类型的原型块。 T为IComponent，最多支持10个组件类型，用于批量处理具有相同组件结构的实体。|

## Property Summary

|Name|Type|Description|
|:-------------|:----------------|:---------------|
|Length|int|实体数量。|
|Components1~10|Span<T1~10>|连续的Component内存段。|
|Ids|ReadOnlySpan<int>|实体Id集。|
|Archetype|Archetype|对应的Archetype。|

**Sample Code**

```screen
var world = new IECSWorld();
var query = world.Query<PgdPosition>();
world.CreateEntity(new PgdPosition());
// 使用QueryArchetypeChunk进行查询迭代
// 以Archetype为单位进行迭代，将查询的组件值和实体id组合成ArchetypeChunk
foreach(var chunk in query.ArchetypeChunk)
{
    // 当前迭代的ArchetypeChunk实体数量
    AreEqual(1, chunk.Length);
    // 当前迭代的ArchetypeChunk的组件值
    var posSegment = chunk.Components1;
    // 当前迭代的ArchetypeChunk的实体Id
    var ids = chunk.Ids;
    // 当前迭代的ArchetypeChunk所属Archetype
    chunk.Archetype; // 等于包含PgdPosition的Archetype
}
```

## Method Summary

|Qualifier and Type|Method Name and Description|
|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------|
|void|[Deconstruct](#section1031617010220)(out ComponentSegment<T1, ...> componentSegment1, out ChunkEntities entities) 用于foreach遍历。|
|string|[ToString](#section2647134191219)() 返回ArchetypeChunk信息的字符串。|

## Methods

### Deconstruct

|Method|
|:-----------------------------------------------------------------------------------------------------------------------------|
|void Deconstruct(out ComponentSegment<T1, ...> componentSegment1, out ChunkEntities entities) 用于foreach遍历。 T为struct，最多支持10个泛型。|

**Parameters**

|Name|Type|Description|
|:----------------|:------------------------|:---------------|
|componentSegment1|ComponentSegment<T1, ...>|连续的Component内存段。|
|entities|ChunkEntities|Chunk内包含的实体。|

**Sample Code**

```screen
var world = new IECSWorld();
var query = world.Query<PgdPosition>();
// 使用QueryArchetypeChunk进行查询迭代
// 以Archetype为单位进行迭代，将查询的组件值和实体id组合成ArchetypeChunk
foreach(var chunk in query.ArchetypeChunk)
{
    // 调用Deconstruct
    var (posSegment, entities) = chunk;
    /*处理逻辑*/
}
```

### ToString

|Method|
|:---------------------------------------------------------|
|string ToString() 返回ArchetypeChunk信息的字符串，打印的组件和标签名字均会带命名域。|

**Return**

|Type|Description|
|:-----|:----------------|
|string|ArchetypeChunk信息。|

**Sample Code**

```screen
var world = new IECSWorld();
var query = world.Query<PgdPosition>();
world.CreateEntity(new PgdPosition());
// 使用QueryArchetypeChunk进行查询迭代
// 以Archetype为单位进行迭代，将查询的组件值和实体id组合成ArchetypeChunk
foreach(var chunk in query.ArchetypeChunk)
{
    // 打印ArchetypeChunk信息。预设组件/标签命名域为"Pgd."，自定义组件/标签/共享组件根据实际情况而定
    chunk.ToString(); // "EntityCount: 1, Archetype: { ComponentTypes: [Pgd.PgdPosition], tags: [], SharedTypes: []}"
}
```

