1.C#中单个的字符串用单引号包含就是char类型,('a'),单引号中放且只能放一个字符

2.单个字符也可以表示为字符串,还可以有长度为0的字符串。

3.使用s.Length属性来获得字符串中的字符个数。

4.string 可以看做是char类型的只读数组。char c=s[1];例子:遍历输出string中的每个元素。

5.c#中字符串有一个重要的特性:不可变性。字符串一旦声明,就不再可以改变。

所以只能通过索引来读取指定位置的char,不能对指定位置的char进行修改。

6.如果要对char进行修改,那么就必须创建一个新的字符串,用s.ToCharArray()方法的得到字符串的char数组,对数组进行修改后,调用new string(char[])这个构造函数。来创建char数组的字符串。一旦字符串被创建,那么char数组的修改也不会造成字符串的变化。

7.string s="abc";s="123"; s这不是变了吗?

解析:区分变量名和变量指向的值的区别。程序中有很多可以有很多的字符串,然后由字符串变量指向他们,变量可以指向其他的字符串。但是字符串本身并没有发生变化。字符串不可变性值得是内存中的字符串不可变,而不
是变量不变。

例一:

using System;
using System.Collections.Generic;
using System.Text; namespace 字符串基础
{
class Program
{
static void Main(string[] args)
{
string s1 = "hello";//定义一个字符串
char[] chars = s1.ToCharArray();//将字符串存放到字符数组里
chars[]='a';//字符数组第一个元素修改为'a'
string s2 = new string(chars);//新构建一个字符串将字符数组chars内容保存下来。
Console.WriteLine("s1={0}",s1);//改变chars并不会改变chars,因为chars是一份拷贝
Console.WriteLine("s2={0}",s2);//打印字符串s2,s2由于新得到了值,所以打印alleo,但今后其字符串不会再改变。
Console.ReadKey();
}
}
}

运行结果:

例子二:

源码如下:

using System;
using System.Collections.Generic;
using System.Text; namespace 字符串基础
{
class Program
{
static void Main(string[] args)
{
string s = "hello";//定义一个字符串
Console.WriteLine(s);//s指向字符串“hello”
s = "yello";
Console.WriteLine(s);//s指向字符串“yello”,s指向发生改变,但字符串本身没有改变。
Console.ReadKey();
}
}
}

程序截图:

例子三:

源码如下:

using System;
using System.Collections.Generic;
using System.Text; namespace 字符串基础
{
class Program
{
static void Main(string[] args)
{
string s1 = "hello";//定义一个字符串
string s2 = s1;//s2指向s1指向的字符串,而不是s2指向s1,哪怕s1以后指向了其他内存,那么s2还是指向"hello"
char[] chars = s1.ToCharArray();//将字符串存放到字符数组里
chars[] = 'a';//字符数组第一个元素修改为'a'
s1 = new string(chars);//新构建一个字符串将字符数组chars内容保存下来。
Console.WriteLine("s1={0}", s1);//改变chars并不会改变chars,因为chars是一份拷贝
Console.WriteLine("s2={0}", s2);//过河拆桥,和s1的改变没有任何关系
Console.ReadKey();
}
}
}

程序运行截图:

c#编程基础之字符串基础的更多相关文章

  1. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  2. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  3. [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式

    [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...

  4. [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句

    [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句 本来没有这一节的内容,后来考虑到既然是一个系列文章,那么就尽可能写的详细一些,本节参考了网上朋友所写的例子,为的是让更多小伙伴学习 ...

  5. CALL/APPLY、一些编程基础以及一些基础知识、正则

    call.apply.bind 求数组的最大值和最小值: 数组排序(SORT的原理->localeCompare实现汉字比较),取头取尾 假设法 利用APPLY传参传递的是一个数组的机制,借用M ...

  6. [.net 面向对象编程基础] (5) 基础中的基础——变量和常量

    [.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...

  7. [.net 面向对象编程基础] (8) 基础中的基础——修饰符

    [.net 面向对象编程基础] (8) 基础中的基础——修饰符 在进入C#面向对象核心之前,我们需要先对修饰符有所了解,其实我们在前面说到变量和常量的时候,已经使用了修饰符,并且说明了变量和常量的修改 ...

  8. [.net 面向对象编程基础] (19) LINQ基础

    [.net 面向对象编程基础] (19)  LINQ基础 上两节我们介绍了.net的数组.集合和泛型.我们说到,数组是从以前编程语言延伸过来的一种引用类型,采用事先定义长度分配存储区域的方式.而集合是 ...

  9. hrbustoj 1551:基础数据结构——字符串2 病毒II(字符串匹配,BM算法练习)

    基础数据结构——字符串2 病毒IITime Limit: 1000 MS Memory Limit: 10240 KTotal Submit: 284(138 users) Total Accepte ...

随机推荐

  1. .NET 串口通信

    这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...

  2. Hyper-V2:向VM增加虚拟硬盘

    使用Hyper-V创建VM,在VM成功安装OS之后,发现VM只有一个逻辑盘C,用于存储VM的操作系统.在产品环境中,需要向VM增加虚拟硬盘,便于将数据单独存储在不同的逻辑盘符中.在Hyper-V中,分 ...

  3. 史上最详细git教程

    题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...

  4. .NET Core的日志[3]:将日志写入Debug窗口

    定义在NuGet包"Microsoft.Extensions.Logging.Debug"中的DebugLogger会直接调用Debug的WriteLine方法来写入分发给它的日志 ...

  5. Carousel 旋转画廊特效的疑难杂症

    疑难杂症 该画廊特效的特点就是前后元素有层级关系. 我想很多人应该看过或者用过这个插件carousel.js,网上也有相关的教程.不知道这个插件的原型是哪个,有知道的朋友可以告诉我. 该插件相对完美, ...

  6. mount报错: you must specify the filesystem type

    在linux mount /dev/vdb 到 /home 分区时报错: # mount /dev/vdb /homemount: you must specify the filesystem ty ...

  7. 关于javascript中的this关键字

    this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...

  8. Hadoop3 在eclipse中访问hadoop并运行WordCount实例

    前言:       毕业两年了,之前的工作一直没有接触过大数据的东西,对hadoop等比较陌生,所以最近开始学习了.对于我这样第一次学的人,过程还是充满了很多疑惑和不解的,不过我采取的策略是还是先让环 ...

  9. DataTable转换成IList<T>的简单实现

    DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...

  10. [转]Java实现定时任务的三种方法

    在应用里经常都有用到在后台跑定时任务的需求.举个例子,比如需要在服务后台跑一个定时任务来进行非实时计算,清除临时数据.文件等.在本文里,我会给大家介绍3种不同的实现方法: 普通thread实现 Tim ...