网站建设资讯

NEWS

网站建设资讯

c#中的string是不能修改的吗

这篇文章主要讲解了“c#中的string是不能修改的吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c#中的string是不能修改的吗”吧!

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都网站建设、外贸营销网站建设、井陉网络推广、微信小程序开发、井陉网络营销、井陉企业策划、井陉品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供井陉建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

这个问题,应该不是问题吧!在C#中string是不可修改的,语法都是这么说的。但我今天想变通一种方式将原始的string内容修改,思路如下:

c++:

void editstring(wchar_t * ptr)
{	
	wchar_t* pc = ptr;
	int index = 0;	
	int len = _tcslen(ptr);//因为C#中传过来的是unicode字符,所以strlen只能==1
	while (index < len)
	{
		if (*pc != 0)
		{
			*pc = *pc + 1;
			pc++;
		}
		index++;
	}
}

c#中:注意:因为c#用的字符串是unicode,比如'a'-->0x00 0x41 ,而不是普通C++中的char,必须要是wchar_t,但我在C#中无法用wchar_t,只能用char

[Dllimport.....]
public static unsafe extern editstring(char* ptr); 


string msg = "abc";
            unsafe 
            {
                fixed(char *pmsg = msg) 
                {
                    editstring(pmsg);
                }
            }
            Console.WriteLine("msg=" + msg);

实验显示如下:

msg=bcd

说明实验成功。

上面做法是使用了fixed语句,那能不能不用fixed达到同样的目的呢?

C++代码不用变,只需要变C#代码:

[DllImport("dllfordebugdemo.dll", EntryPoint = "editstring", CallingConvention = CallingConvention.Cdecl)]
        public static extern void editstring(IntPtr ptr);

 string msg = "abc";
            unsafe 
            {
                fixed(char *pmsg = msg) 
                {
                    IntPtr pm = (IntPtr)pmsg;
                    editstring2(pm);
                }
            }
            Console.WriteLine("msg=" + msg);

最终实验也成功了。

感谢各位的阅读,以上就是“c#中的string是不能修改的吗”的内容了,经过本文的学习后,相信大家对c#中的string是不能修改的吗这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网站名称:c#中的string是不能修改的吗
URL地址:http://cdweb.net/article/gjiepe.html