当前位置:  编程技术>.net/c#/asp.net

C#使用非托管代码直接修改字符串的方法

    来源: 互联网  发布时间:2014-10-22

    本文导语:  代码如下: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(...

代码如下:

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为非托管类型或void
ptr为指针名
expr为可以隐式转换为type*的表达式
statement为可执行的语句或块
  fixed语句只能在unsafe的上下文中使用,fixed 语句设置指向托管变量的指针并在 statement 执行期间“锁定”该变量。如果没有 fixed 语句,则指向托管变量的指针将作用很小,因为垃圾回收可能不可预知地重定位变量。
  执行完 statement 后,任何锁定的变量都被取消锁定并受垃圾回收的制约。因此,不要指向 fixed 语句之外的那些变量。在不安全模式中,可以在堆栈上分配内存。堆栈不受垃圾回收的制约,因此不需要被锁定。

但在编译时,因为使用了非托管代码,必须要使用/unsafe才能通过。


    
 
 

您可能感兴趣的文章:

  • c#中SAPI使用总结——SpVoice的使用方法
  • c#友好显示日期 c#日期datetime使用方法
  • 请问在工作岗位的朋友!使用java开发的公司对c#的态度如何?
  • c#自带缓存使用方法 c#移除清理缓存
  • C#中的switch case使用介绍
  • c# 空合并运算符“??”的使用详解
  • 使用C#实现在屏幕上画图效果的代码实例
  • 深入C#中使用SqlDbType.Xml类型参数的使用详解
  • c#闭包使用方法示例
  • c# split分隔字符串使用方法
  • c#的params参数使用示例
  • c#使用资源文件的示例
  • 使用C# Winform应用程序获取网页源文件的解决方法
  • C#将时间转成文件名使用方法
  • C# 使用匿名函数解决EventHandler参数传递的难题
  • 使用C#获取系统特殊文件夹路径的解决方法
  • C#使用带like的sql语句时防sql注入的方法
  • C#可选参数的相关使用
  • C# 静态构造函数使用总结
  • C# WndProc的使用方法示例
  • Python不使用print而直接输出二进制字符串
  • 在ACC变成中要使用发ftp传送文件,但文件名不确定,请问怎么样在程序的FTP中使用字符串变量???
  • php使用strip_tags从字符串中去除html标记
  • 怎样在使用curses字符串输出函数或字符输出函数时,隐藏光标
  • 如何用sha1sum获取一个字符串使用sha-1加密后的16进制字符串?
  • 使用java如何分析系统不能识别的字符串?
  • 关于使用shell在文件中查找一段字符串的问题
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • 使用sh脚本如何替换指定目录下所有文件中的指定字符串
  • Oracle中SQL语句连接字符串的符号使用介绍
  • 如何使用shell命令取到本机ip,注意只有本机ip的字符串 ,比如“xxx.xxx.xxx.xxx”
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何处理客户机和服务器使用不同字符集(包括双字节字符)上传或下载文件时文件名的转换问题
  • sql server中使用Unicode字符时要注意的问题
  • 如何使Linux使用别的机器作为代理上网(字符界面下)
  • 使用secureCRT删除字符的问题
  • 为什么在KDE下使用控制台经常字符会乱掉??
  • 浏览器的使用 LINUX(UNIX)字符模式下
  • RedHat AS 4 不能使用这几个转义字符 c t n?
  • 自己编写一个简单的字符设备驱动程序以后,改怎么使用它?
  • 如何在java中获知操作系统正在使用的默认字符集?
  • 为什么无法进入“系统维护与使用区”?提示“文本内容中发现无效字符。”
  • 使用test如何识别变量为空字符串?
  • 在控制台(字符)界面下,如何显示彩色的图片(BMP),有现成的库可以使用吗?
  • 问题:在linux系统中,怎么使用shell脚本,在文件的第三行和第四行之间新增一行(插入一段字符,或者一个变量的值)?
  • MySQL 转义字符使用说明
  • linux内核怎么定义汇编全局变量及在c文件中使用这个变量?有关0。11下的字符回显
  • 请问在linux下的字符界面下如何使用优盘?需要安装驱动程序吗?
  • C#中使用强制类型实现字符串和ASCII码之间的转换
  • c#字符串使用正则表达式示例
  • 在使用JDK1.4的正则表达式功能时,发现如果被搜索的字符太多,例如一篇文章.就会报错
  • 解析在MYSQL语法中使用trim函数删除两侧字符
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Office 2010 Module模式下使用VBA Addressof
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3