string temp = new string(char* value)
.................new string(sbyte* value)请问那个* 代表什么意思 ?
能否举个例子 说明 下什么意思 ,谢谢!

解决方案 »

  1.   

    你这问题跟前几天有人问过的一样...这些特殊的重载构造函数是为与非托管代码交互准备的,只用于非常特殊的场景...而且它们不兼容CLS,并且可能导致访问冲突....这些是给写底层代码的留的,一般人不必深究...指针和不安全代码也不是给一般程序员用的...
      

  2.   

    指针,最初在C++中出现的概念,详细的使用要看C++,C#只不过是为了兼容C++而保留了一部分功能,因此在C#中使用指针会很麻烦,而且功能也受到很大限制,因此不推荐使用。你要了解指针,要看C++关于指针的解释。
      

  3.   

    感谢这位哥们儿,如果你有时间的话,可以帮我解释下
    unsafe string phonedecode(string ph)
            {
                int x = ph.Length % 2 == 0 ? ph.Length : ph.Length + 1;
                char* ca = stackalloc char[x];
                for (int i = 0; i < x; i++)
                    if (i % 2 == 0)
                        *(ca + i) = (i + 1) == ph.Length ? 'F' : ph[i + 1];
                    else
                        *(ca + i) = ph[i - 1];
                return new string(ca, 0, x);
            }
    上面代码中代*的意思吗?简单写下注释 就好了, 
    小弟感激不尽 可以加分
      

  4.   

    你可以参考msdn的说明http://msdn.microsoft.com/zh-cn/library/y31yhkeb(v=vs.80).aspxunsafe string phonedecode(string ph)
    {
        int x = ph.Length % 2 == 0 ? ph.Length : ph.Length + 1;
        char* ca = stackalloc char[x];//在堆栈分配x个char字符的空间,减少GC负担和堆内存碎片
        for (int i = 0; i < x; i++)
            if (i % 2 == 0)
                *(ca + i) = (i + 1) == ph.Length ? 'F' : ph[i + 1];//*m代表m这个内存地址的char类型的值,*(ca + i)也可以写为ca[i],实际运行中,ca[i]比*(ca + i)更快
            else
                *(ca + i) = ph[i - 1];
        return new string(ca, 0, x);
    }
    fixed(char* ca = ph)//这种方式修改ca[int index]的值会修改字符串ph的值,在有些情况下更有效率
    {
        //..........
    }
      

  5.   

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=450340508&site=qq&menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=2:450340508:41" alt="点击这里给我发消息" title="点击这里给我发消息"></a>