偶然发现了这个string(char* value)谁知道? string temp = new string(char* value).................new string(sbyte* value)请问那个* 代表什么意思 ?能否举个例子 说明 下什么意思 ,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这问题跟前几天有人问过的一样...这些特殊的重载构造函数是为与非托管代码交互准备的,只用于非常特殊的场景...而且它们不兼容CLS,并且可能导致访问冲突....这些是给写底层代码的留的,一般人不必深究...指针和不安全代码也不是给一般程序员用的... 指针,最初在C++中出现的概念,详细的使用要看C++,C#只不过是为了兼容C++而保留了一部分功能,因此在C#中使用指针会很麻烦,而且功能也受到很大限制,因此不推荐使用。你要了解指针,要看C++关于指针的解释。 感谢这位哥们儿,如果你有时间的话,可以帮我解释下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); }上面代码中代*的意思吗?简单写下注释 就好了, 小弟感激不尽 可以加分 你可以参考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的值,在有些情况下更有效率{ //..........} <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> 一道算法题。。 超级终端-AT指令怎样清屏? 取时间默认加0 求一个正则表达式! 重载的使用 c# winform程序运行中的强制退出的 TMD这个问题搞了我很久,再发贴问一次,解决了另开贴给200分 win from 里怎么才可以像网页那样排版 datagrid中的DataGridBoolColumn 代码混淆技术的研究 hammingcode算法怎么实现啊? C#调用VC写的DLL问题,急,在线等,问题解决,马上结贴
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);
}
上面代码中代*的意思吗?简单写下注释 就好了,
小弟感激不尽 可以加分
{
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的值,在有些情况下更有效率
{
//..........
}