有效生成密钥的类

时间:2011-01-21 14:26:06

标签: c# code-generation unsafe

所以,我正在研究高效生成基于整数数组的唯一键的方法,并且可以存储在数据库列中。

在C的旧时代,我可以创建一个数组内存位置的副本,并将其作为字符串返回,然后将其作为我的密钥。我不知道C#中是否还能做到这一点,但我看起来(几乎)和这个一样高效。有什么建议吗?

谢谢, 末尔

更新: 我的意思是结果应该是唯一的,具体取决于输入数组的元素。因此,GUID建议不适用于此处。一个明显的解决方案是将数组元素的文本版本连接成一个字符串,如Jon Benedicto所建议的那样。我所看到的是执行效率非常高的东西。在查看C#语言参考中的不安全代码部分后,我自己想出了以下代码:

    public static string BuildKey( int[ ] src ) {
        string res;
        unsafe {
            fixed( int* fxsrc = src ) {
                res = new string( ( char* )fxsrc, 0, src.Length*2 );
            }
        }
        return res;
    }       

该代码有问题吗?

2 个答案:

答案 0 :(得分:3)

var pk = Guid.NewGuid();

// Or if you need it as a string
var pkAsString = pk.ToString();

How more unique do you need it?

答案 1 :(得分:1)

如果在C#中有一个要转换的整数数组,可以使用Array类上的ConvertAll静态泛型方法将整数转换为字符串表示形式:

int[] data = { 0, 1, 2, 3, 4, 5, 6 };

string value = String.Join(",", Array.ConvertAll<int, string>(data, x => x.ToString()));