1、 转义符的作用
1.string s=""ab"";---报错---
string s=" \"ab\" "------true--------打印出来时"ab"
string s="\\\\" ----打印出来 \\
2.@只对转义符有意义
string s=@"\\\\" ----打印出来 \\\\
string s=@"tupian\tu.jpg"----打印出图片地址
用户输入a\nb,得出的结果是a\nb;
转义符只针对在代码中直接写出的字符串,对于程序中读取出来的就是这个问题
2 . cast和convert数据类型转换的区别
1.casting数据类型 ---相当于从本质上转换,强制转换, 例:int i=(int)s;
2.int.Prase(变量名称)
3.convert数据类型 ---相当于加工,改造的过程,本质没变
convert ToString() ---转换为字符串
convert ToInt32() ----转换为整型
convert Single() ----转换为单精度浮点型
convert ToDouble() ---转换为双精度浮点型
例:convert ToIn32(s2);
3 . break,continue 和 return 的区别
break ---结束这个循环操作
continue ---结束当前循环。继续循环下一次操作
return ---结束这个函数,这个函数的所有内容都不在执行
4.值类型的值域
1.int的最大值和最小值
2.byte(字节,比Int范围小得多)
最大值:int.MaxValue (想知道int/byte/...中最多或者最少位数。可以用这个)
最小值:int.MinValue
5.枚举
枚举(用来限定变量的取值范围,程序处理起来更方便)___在同一个项目中都可以使用
enum Gender{值1,值2}---------------与class是同一级别枚举的用法:Gender girl=Gender.sex;------ -例:friend girl=friend.好女;
6.可变的参数
1.params用在参数中可以传递多个参数 【p e 润s】
例:
static void Main(string[] args){
Changge("tom","lion","elephane");}static void Changge(params string[] animals)//加 params可以传递多个参数{for(int i=0;i<animals.Length;i++){Console.WriteLine(animals[i]);}
}
2.函数重载
例1:
public static void Changge(int age)
{
Console.WriteLine("大家好,我{0}岁了",age);
}
public static string Changge(string name) //当函数重载时,参数个数不同 或者 参数类型不相同
{
return"大家好。这个叼毛叫"+name;
}
例2:
public static void Changge(string father,string mother)
{
}
publc static void Changge(string fameliy) //当函数重载时,参数个数不同 或者 参数类型不相同
{
}
注:有增长性 时。用这个
public FrmOrderBySongName()
{
InitializeComponent();
dgvSongInfo.AutoGenerateColumns = false;
}
7. char和string 类型的另类区别
例:
string s="hello";
char z=s[1];
Console.WriteLine(z); //结果为h
8. string类
要区分变量名和变量指向的值得区别,程序中可以有很多字符串,然后由字符串变量指向他们,变量可以指向其他的字符串,
但是字符串本身没有变化,字符串不可变性指的是内存中的字符串不可变,而不是变量不可变。
例1:
string s1="hello";
char[] chars=s1.ToCharArray(); //转换为字符
chars[0]='a';
string s2=new String(chars); //s2是一份拷贝,而s1中的字符串不会变
Console.WriteLine(s1); //s1的值为hello
Console.Write(s2); //s2的值为aello
例2:
string s1="hello";
string s10=s1; //s10拷贝了一份s1.不管s1怎么改变值,s10的值都不会被改变
char[] chars=s1.ToCharArray();
chars[0]='a';
s1=new string(chars);
Console.WriteLine(s1); //s1的结果为ahello
Console.WriteLine(s10); //s10的结果为hello;
1.string类常用函数
1.ToLower() ---得到字符串的小写形式。
2.ToUpper() ---得到字符串的大写形式.
3.Trim() ---去掉字符串两端的空白,中间的空白不会去掉(例:[a b])
4.StringComparison.OrdinalIgnoreCase:忽略大小写,而==是比较大小写,ignore:忽略 case:大小写 ordinal:排序
例:
bool s=("abc"=="ABC");
bool s1="abc".equals("ABC",StringComparison.OrdinalIgnoreCase); //比较忽略后大小写的比较
5.ToCharArray() ---转换为字符,返回一个数组
6.split(params char[] separation) ---分割字符串,反返回一个数组。(separation是间隔的意思,例:string s="1,2.3;4|"; s=s.split(',','.',';','|'); 输出的结果为一节一节的)
7.StringSplitOptions.RemoveEmptyEntries --移除空白 entries
例1:
string s1="123aa,123bb,123cc,,,,123dd,123ee";string[] s=s1.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries); entries:进入-----用多个分隔符分割时才需要用到split(new char[]{'?'})
例2:也可以用字符串进行分割
string[] s=s1.Split(new string[]{"123",","},StringSplitOptions.RemoveEmptyEntries)
例3:读取文件string[] lines=System.IO.File.ReadAllLines(@"c\1.txt",Encoding.Default);
8. Replace(oldValue,newValue)----将oldValue替换为newValue 例:string s="我是周杰伦,周杰伦是我";s=s.Replace("周杰伦",“你爹”) Regex.Replace(str,@"(http://[a-aA-z0-9]_\-\.&\?+)","<a href=\"$1\">$1</a>");
9.Substring(int StartIndex); ---输出从 StartIndex 开始到这个 字符串末端
例:string local="FTTP://312.COM" local=local.Substring(7) //输出"为312.COM" Substring(int StartIndex,int length) ---输出StartIndex开始length这个长度的字符串
例:local=local.Substring(7,2); //输出为"31"
10. . bool Contains(string value) ---判断字符串是否含有子串value
bool StartsWith(string value) ---判断字符串是否以子串value开头
bool EndsWith(string value) ---判断字符串是否以子串value结束
int IndexOf(string value) ---取字符串第一次出现的位置
注意:字符串是不可变的,所以这些函数都不会直接改变字符串的内容,而是把修改后的字符串的值通过函数返回值的形式返回,
例:s=s.ToLower();
例1:
错误: string s="HELLO":s.ToLower();Console.WriteLine(s); //输入的结果为HELLO
正确:string s=HELLO";s=s.ToLower(); //转换为小写Console.WriteLine(s); //s 的值为hello, 并不是改变了字符串的内容,而是重新生成了一个新的全部变为小写的字符串, 然后变量s指向这个字符串
9.. null与string.empty的区别
null:是空引用,对于一个引用类型而言,只在栈中为其分配一小块内存,但不指向堆,压根就不知道指向哪(就像没人要的野孩子)
String.Empty :是空字符串,指向堆中某一块区域,但是这个堆中的内容是空字符串,神马内容都没有(这个孩子家里就它一个了,没有其它任何人了)
10.索引
索引的不单单索引整形。也可以是其他类型,而且索引值要一一对应。如果是string 类型的。索引限定是只读的,具体可以看里面的方法介绍
例:
Person p1 = new Person();
//p1[1] = "大神";
//Console.Write(p1[1]+p1[2]);
Console.WriteLine(p1["周杰伦", 1, 2]);}
class Person
{
private string firstName = "小明";
private string secondName = "小黄";
public string this[string name, int i, int j] //string是这个索引的数据类型
{
get
{
return name + j + i;
}
set
{
name = value;
}
}
public string this[int index]
{
set
{
if (index == 1)
{
firstName = value;
}
else
{
secondName = value;
}
}
get
{
if (index == 1)
{
return firstName;
}
else if (index == 2)
{
return secondName;
}
else
{
throw new Exception("索引不正确!");
}
}
11.ref与out区别
ref在传递之前必须初始化变量。out在传递之前不用初始化变量ref可进可出,out只出不进当将参数out进来后,会将变量进行初始化,而ref则不会
12.tryPase():尝试转换,返回值为bool类型
int.tryParse(要转换的类型的变量,out 要进行转换的变量) 例:tryParse(s1,out i)
13.修饰的限定范围
private:只能在本类中使用protected:在本类中及其子类中可以使用internal:同一命名空间(程序集)中的类可以使用public:所有类均可使用
14.DataTime
DateTime.Parse(“出生日期”);【怕z】 将字符串转换成日期格式
15.各种格式: 货币、十进制、十六进制、指数、固定精度、常用格式、分割数字....
C或c Currency 货币格式
D或d Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了)
E或e Exponent 指数格式
F或f Fixed point 固定精度格式
G或g General 常用格式
N或n 用逗号分割千位的数字,比如1234将会被变成1,234
P或p Percentage 百分符号格式
R或r Round-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字X或x Hex 16进制格式
例:
int i=12345;
Console.WriteLine("{0:C}",i); //货币
Console.WriteLine("{0:D}",i); //十进制数
16.获取各种不同规格的日期的函数
d MM/dd/yyyy ShortDatePattern(短日期模式)
D dddd,MMMM dd,yyyy LongDatePattern(长日期模式)
F dddd,MMMM dd,yyyy HH:mm Full date and time (long date and short time)(全日期和时间模式)
F dddd,MMMM dd,yyyy HH:mm:ss FullDateTimePattern (long date and long time)(长日期和长时间)
G MM/dd/yyyy HH:mm General (short date and short time)(通用模式,短日期和短时间)
G MM/dd/yyyy HH:mm:ss General (short date and long time)(通用模式,短日期和长时间)
M,M MMMM dd MonthDayPattern(月天模式)
r,R ddd,dd MMM yyyy,HH':'mm':'ss 'GMT' RFC1123Pattern (RFC1123模式)
S yyyy-MM-dd HH:mm:ss SortableDateTimePattern (conforms to ISO 8601) using local time(使用本地时间的可排序模式)
T HH:mm ShortTimePattern (短时间模式)
T HH:mm:ss LongTimePattern(长时间模式)
U yyyy-MM-dd HH:mm:ss UniversalSortable-DateTimePattern (conforms to ISO 8601) using universal time(通用可排序模式)
U dddd,MMMM dd,yyyy,HH:mm:ss UniversalSortable-DateTimePattern(通用可排序模式)
y,Y MMMM,yyyy YearMonthPattern(年月模式)
例:
Console.WriteLine("{0:D}",DateTime.Now); //输出到天
Console.WriteLine("{0:y}",DateTime.Now); //输出到月
Console.WriteLine("{0:m}",DateTime.Now); //取出是那个月
Console.WriteLine("{0:T}",DateTime.Now); // 取长时间到秒