楼主的需求符合简单的唯一哈希 unsafe class uniqueHash : IDisposable
{
private fastCSharp.pointer data;
public uniqueHash()
{
data = fastCSharp.unmanaged.Get(sizeof(char) * 0x3f);
char* point = data.Char;
for (int value = 0x002; value <= 0x007; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x00A; value <= 0x017; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01A; value <= 0x01C; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01F; value <= 0x01F; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x021; value <= 0x021; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x1EA; value <= 0x1EF; ++value) point[value & 0x3f] = (char)value;
}
public bool IsChar(char value)
{
value >>= 4;
return data.Char[value & 0x3f] == value;
}
public void Dispose()
{
fastCSharp.unmanaged.Free(data.Data);
data.Data = null;
}
}
{
private fastCSharp.pointer data;
public uniqueHash()
{
data = fastCSharp.unmanaged.Get(sizeof(char) * 0x3f);
char* point = data.Char;
for (int value = 0x002; value <= 0x007; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x00A; value <= 0x017; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01A; value <= 0x01C; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01F; value <= 0x01F; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x021; value <= 0x021; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x1EA; value <= 0x1EF; ++value) point[value & 0x3f] = (char)value;
}
public bool IsChar(char value)
{
value >>= 4;
return data.Char[value & 0x3f] == value;
}
public void Dispose()
{
fastCSharp.unmanaged.Free(data.Data);
data.Data = null;
}
}
{
private fastCSharp.pointer data;
public uniqueHash()
{
data = fastCSharp.unmanaged.Get(sizeof(char) * 0x3f);
char* point = data.Char;
*point = (char)1;
for (int value = 0x002; value <= 0x007; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x00A; value <= 0x017; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01A; value <= 0x01C; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01F; value <= 0x01F; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x021; value <= 0x021; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x1EA; value <= 0x1EF; ++value) point[value & 0x3f] = (char)value;
}
public bool IsChar(char value)
{
value >>= 4;
return data.Char[value & 0x3f] == value;
}
public void Dispose()
{
fastCSharp.unmanaged.Free(data.Data);
data.Data = null;
}
}
{
private fastCSharp.pointer data;
public uniqueHash()
{
data = fastCSharp.unmanaged.Get(sizeof(char) * 0x3f);
char* point = data.Char;
*point = (char)1;
for (int value = 0x002; value <= 0x007; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x00A; value <= 0x017; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01A; value <= 0x01C; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01F; value <= 0x01F; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x021; value <= 0x021; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x1EA; value <= 0x1EF; ++value) point[value & 0x3f] = (char)value;
}
public bool IsChar(char value)
{
value >>= 4;
return data.Char[value & 0x3f] == value;
}
public void Dispose()
{
fastCSharp.unmanaged.Free(data.Data);
data.Data = null;
}
}普通的数组模式 class uniqueHash
{
private char[] data;
public unsafe uniqueHash()
{
fixed (char* point = data = new char[0x40])
{
*point = (char)1;
for (int value = 0x002; value <= 0x007; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x00A; value <= 0x017; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01A; value <= 0x01C; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x01F; value <= 0x01F; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x021; value <= 0x021; ++value) point[value & 0x3f] = (char)value;
for (int value = 0x1EA; value <= 0x1EF; ++value) point[value & 0x3f] = (char)value;
}
}
public bool IsChar(char value)
{
value >>= 4;
return data[value & 0x3f] == value;
}
}