使用非托管代码直接修改字符串

监狱过客

监狱过客

2016-01-29 13:19

使用非托管代码直接修改字符串,使用非托管代码直接修改字符串

  在string方法中,如ToUpper等字符串操作方法,都会产生一个新的字符串,这样增大了运行开支。一个替代方案是通过非托管代码直接操作字符串。如替代ToUpper方法:using System;
public class Test{ public static void Main(string[] args) { string str = "hello"; ToUpper(str); Console.WriteLine(str); } private static unsafe void ToUpper(string str) { fixed(char * pfixed = str) for(char * p=pfixed;*p!=0;p++) { *p = char.ToUpper(*p); } }}
fixed语句:格式 fixed ( type* ptr = expr ) statement它的目的是防止变量被垃圾回收器生定位。其中:type为非托管类型或voidptr为指针名expr为可以隐式转换为type*的表达式statement为可执行的语句或块  fixed语句只能在unsafe的上下文中使用,fixed 语句设置指向托管变量的指针并在 statement 执行期间锁定该变量。如果没有 fixed 语句,则指向托管变量的指针将作用很小,因为垃圾回收可能不可预知地重定位变量。  执行完 statement 后,任何锁定的变量都被取消锁定并受垃圾回收的制约。因此,不要指向 fixed 语句之外的那些变量。在不安全模式中,可以在堆栈上分配内存。堆栈不受垃圾回收的制约,因此不需要被锁定。但在编译时,因为使用了非托管代码,必须要使用/unsafe才能通过。
展开更多 50%)
分享

猜你喜欢

使用非托管代码直接修改字符串

电脑网络
使用非托管代码直接修改字符串

java 字符串词频统计实例代码

编程语言 网络编程
java 字符串词频统计实例代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

字符串分割

编程语言 网络编程
字符串分割

asp 正则 过滤重复字符串的代码

Web开发
asp 正则 过滤重复字符串的代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

字符串格式定义

电脑入门
字符串格式定义

asp正则过滤重复字符串的代码

Web开发
asp正则过滤重复字符串的代码

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如果操作EXCEL提示没有权限?

如果操作EXCEL提示没有权限?

《初音未来 歌姬计划f》Stay with me谱面攻略

《初音未来 歌姬计划f》Stay with me谱面攻略
下拉加载更多内容 ↓