C#语法关键字(个人总结)

1、foreach

  • 适用于循环次数未知,或计算循环次数比较麻烦的情况,但是更为复杂的循环仍需使用for循环。

2、大小写转换 ToUpper ToLower

  • ToUpper:小写转大写;
    ToLower:大写转小写。

3、logger之间的区别和作用:

  • (1)作用都是把错误信息写到文本日志里。
    • (2)不同的是它们表示的日志级别不同:
      • I、日志级别由高到底是:fatal,error,warn,info,debug,
      • II、低级别的会输出高级别的信息,高级别的不会输出低级别的信息,
      • III、如等级设为Error的话,warn,info,debug的信息不会输出
  • (3)修改日志输出的级别要在log4j文件中进行配置。

4、System.data下的内容

(1)DataSet是ADO.NET中的概念,相当于内存中的数据库,它是不依赖于数据库的独立数据库集合。
特点:无论数据库断开或者关闭都不会影响其中的数据。
(2)DataTable被称为数据表对象,是一个临时保存数据的网格虚拟表,使用DataTable的对象包括DataSet和DataView,
其中存放的一行一行的数据,即为DataRow的数组。
(3)DataRow是DataTable中的数据行,其内部包含多个数据列,每个列可存储不同类型的值。

5、Dictionary数据字典 在System.Collections.Generic命名空间

(1)判断键值是否已经存在

	 //key:键值;value:值
  	 Dictionary<key,value> Dic=new Dictionary<key,value>;
     Dic.ContainsKey(key);//用于判断键值是否已经存在
     Dic.add(key,value);//添加或新建键值和值信息

(2)关键字解析
KeyValuePair:一个结构体,只包含一个key、value的键值对。
Dictionary:简单看为KeyValuePair的集合,包含多个key、value的键值对

6、截取字符串SubString、Split

  • (1)SubString:截取字符串,用于处理字符串过长的问题。
String Str= "*******";//*指代字符串
//index:截取数据的起始位置,从0开始;length:要获取的字符长度
//提取字符串中第index字符开始的长度为length的字符串
Str.SubString(int index,int length);
//提取字符串中右数长度为Rlength的字符串
Str.SubString(int Rlength);
  • (2)Split的使用:返回的字符串数组包含此实例中的子字符串。
    • I、Split(char()):根据单个分隔字符用Split截取(由指定的Unicode字符数字的元素分隔)。
      例如:
Str.Split('_');//必须要单引,_指代分隔符
  • II、Split(String(),StringSplitOptions):根据字符串或字符串组来截取字符串(由指定字符串数字的元素分隔)。
    例如:
//lz1和lz2指代截取用到字符串或字符数组
Str.Split(new string[]{"lz1","lz2"},StringSplitOptions. RemoveEmptyEntries);
  • III、利用多个字符来分隔字符串
    例如:
Str.Split(new char[2]{ 'i','j'});//i、j指代截取要用的字符

7、String和 StringBuilder

  • (1)、什么时候使用?
    字符串一旦创建就不可修改大小,所以对字符串添加或删除操作比较频繁的话,用StringBuilder不用String。
  • (2)、两者之间的区别
    • I、String申明后在内存中的大小是不可修改的,而StringBuilder可以自由扩展大小。
    • II、String分配在栈区StringBuilder分配在堆区
  • (3)区分以下三种表达方式:
    • I、“ == ”:比较的是栈里面的值是否相等(值比较)。
    • II、“Equals”:比较的是堆里面的值是否相等(引用地址值比较)。
    • III、“Object.ReferenceEquals(obj1,obj2)”:比较的是地址是否相等。

8、延时初始化 Lazy

  • 实现对象的延时初始化,优化系统的性能。将对象的初始化延迟到第一次使用该对象时。目的是提高程序的效率,让程序占用更少的内存。
    :某一对象创建需要花费巨大的开销,但这一对象在系统实际运行中很少会用到,这个对象就可以使用延迟初始化Lazy。

9、as和is用法

as和is这两个运算符可以用来测试强制转换是否会成功,使用过程中不会产生报异常的风险。

  • (1)、is运算符检查对象是否与给定的类型兼容。
    例:if(b is B) 将检查对象b是否为B类型的一个实例,或是从B派生一个类型的实例
  • (2)、as运算符用于在可兼容的引用类型之间执行强制类型转换的操作,区别于强制转换的是,当转换失败时,as运算符将返回NULL(空),而不是引发异常。

10、NameValueCollection类集合

基于NameObjectCollectionBase类,不同之处在于该类在一个键下存储多个字符串值,允许重复,可用于标头、查询字符串和窗体数据;键相同,值就连接起来,如下:

NameValueCollection myCol=new NameValueCollection();
myCol.Add("red","rojo");//若键值red相同结果合并rojo,rouge
myCol.Add("red","rouge");

:使用前需引用 using System.Collections.Specialized;

11、hashtable (哈希表)

特点:键-值集合,其中键不能出现重复。
引用自:using System.Collections;
例子:

Hashtable ht=new Hashtable();
ht.Add("key","value");
ht.Add("key","value1");//出错
ht["key"]="value1";//正确

12、强制类型转换,int

  • (1)(int)变量名[强制类型转换]:
    • 主要用于数字类型转换,从int类型到long,float,double,decimal类型,可以使用隐式转换(不易出现异常,装箱),但是从long类型到int类型就需要使用显示转换(强制,拆箱),也就是该数据类型转换方式,否则会产生编译错误。
      :浮点数的转换,会做无条件舍去,失去精度。
      char类型到int的转换,会传回值为ASCII代码,并非所需的值。
  • (2)int.Parse(string类型变量名)
    • 主要用于将数字内容的字符串转为int类型,若字符串为空或null时,则抛出ArgumentNullException异常(论据无效异常);若字符串内容不是数字,则抛出 FormatException 异常(格式异常);若字符串内容所表示的数字超出int类型可表示的范围,则抛出 OverflowException 异常(溢出异常)。
      :只可处理字符串内容,且字符串内容需在int类型可表示的范围内。
  • (3)int.TryParse(sting s,out int result)
    • 主要用于将数字内容的字符串转为int类型,但是该方式比int.Parse优越的地方,就是其不会出现异常。若转换成功则返回true,否则返回false。故而,当最后一个参数为输出值,若转换成功,则输出相对应的值,否则输出值为0。
  • (4)Convert.ToInt32
    • 可以将字符串转换为int类型,同样可以将其他类型的转换为int类型。当变量为object或String类型,且值都为null时,会传回0,不会出现程序错误,但是若是其中的String类型值为String.Empty,在转型成int时,依旧会出现程序错误。
      :浮点数会四舍五入。
      不可用来处理char类型,否则传回的是ASCII代码。

13、连接数据库OleDbConnection与SqlConnection

  • OleDbConnection
    • 适用于连接任何数据库,如Oracle,SQL Server,ACCESS等数据库系统,命名空间为:using System.Data.OleDb.连接池用OleDbDataAdapter和操作命令用OleDbCommand.连接池,DataSet,DataTable可以联合使用。
  • SqlConnection:
    • 用来连接SQL Server(MS SQL)数据库,命名空间为:using System.Data.SqlClient.连接池用SQLDataAdapter和操作命令用SqlCommand. 连接池,DataSet,DataTable可以联合使用。

14、File类的操作

File类,是一个静态类,主要是来提供一些函数库用的。例如创建,拷贝,移动,删除和打开一个文件。File类的方法的参量多数用的是路径Path。其中一些方法可返回FileStream和StreamWriter的对象,相互配套使用。
命名空间为:System.IO.FileSystem.IO.FileInfo

  • (1)文件打开方法:File.Open()
    • 此方法声明如下:
public static FileStream Open(string path,FileMode mode);
//打开c:\test目录下名称为newFile.txt文件,并在该文件中写入hello
FileSteam.TextFile=File.Open(@"c:\test\newFile.txt",FileMode.Append);
byte[] info = {(byte)'h',(byte)'e',(byte)'l',(byte)'l',(byte)'o'};
TextFile.Write(info, 0, info.Length);
TextFile.Close();
  • (2)文件创建方法:File.Create()
    • 此方法声明如下:
public static FileSteam Create(string path);
//在c:\test下创建名为newFile.txt的文件
FileStream NewText = File.Create(@"c:\test\newFile.txt");
NewText.Close();
  • :File.Create方法默认向所有用户授予对新文件的完全的读/写访问权限,所以文件是用读/写访问权限打开的,必须关闭后才能由其他应用程序打开。因此,需要使用到FileStream类的Close方法将所创建的文件关闭。
  • (3)文件删除方法:File.Delete()
    • 此方法的声明如下:
public static void Delete(string path);
//删除c:\test目录下的newFile.txt文件
File.Delete(@"c:\test\newFile.txt");
  • (4)文件复制方法:File.Copy()
    • 此方法的声明如下:
public static void Copy
(string sourceFileName, string destFileName, bool overwrite);
//将c:\test\newFile.txt中的内容复制到c:\test\BackUp.txt文件下
File.Copy(@"c:\test\newFile.txt", @"c:\test\BackUp.txt", true);
  • :Copy方法的overwrite参数初始设为true,所以若BackUp.txt文件已存在的话,将会被复制过去的文件所覆盖。
  • (5)文件移动方法:File.Move()
    • 此方法的声明如下:
public static void Move(string sourceFileName, string destFileName);
//将c:\test\下的BackUp.txt文件移动到C盘根目录下
File.Move(@"c:\test\BackUp.txt", @"c:\BackUp.txt");
  • :只能在同一个逻辑盘下进行文件转移,否则将会发生错误
  • (6)设置文件属性方法:File.SetAttributes
    • 此方法声明如下:
public static void SetAttributes(string path, FileAttributes fileAttributes);
//设置文件c:\test\newFile.txt的属性为只读、隐藏
File.SetAttributes(@"c:\test\newFile.txt", FileAttributes.ReadOnly | FileAttributes.Hidden);
  • :文件的属性有只读(ReadOnly)、隐藏(Hidden)、存档(Achive)
  • (7)判断文件是否存在的方法:File.Exist()
    • 此方法声明如下:
public static bool Exist(string path);
//判断文件是否存在
File.Exists(@"c:\test\newFile.txt")
  • (8)File类对text文本
    • AppendText:将文本追加到现有文件
    • CreateText:为写入文本创建或打开新文件
    • OpenText:打开现有文本文件以进行读取
  • (9)适用于UTF-8的编码文本读写操作如下
    • I、对txt文件进行操作,代码如下:
StreamReader TxtReader = new StreamReader(@"c:\test\newFile.txt",System.Text.Encoding.Default);
string FileContent;
FileContent = TxtReader.ReaderEnd();
TxtReader.Close();
  • II、对txt文件进行写操作,代码如下:
StreamWriter TxtWriter = new StreamWriter(@"c:\test\newFile.txt",System.Text.Encoding.Defaul);
string FileContent;
TxtWriter.Write(FileContent);
TxtWriter.Close();

15、Peek:返回下一个可用字符,但不使用它

例子

//输出每一行检查文件是否结尾,若没有则输出改行
StreamReader sr = new StreamReader(@"c:\test.txt");
while(sr.Peek() > -1)
{
	Console.WriteLine(sr.ReadLine());
}

16、Email文件的发送方法

  • (1)、命名空间的引用:using System.Net.Mail;
  • (2)、实现代码():
//回执地址
var Receipt = "填写需要回执的地址";
//两个对象的实例化:Mail和SMTP
MailMessage mail = new MailMessage();
SmtpClient smtp = new SmtpClient();
//发送邮箱地址
mail.From = new MailAddress("发送邮箱地址");
//收件人(可群发)
mail.To.Add(new MailAddress("收件邮箱地址"));
//是否以HTML格式发送
mail.IsBodyHtml = true;
//主题的编码格式(这里是UTF-8)
mail.SubjectEncoding = Encoding.UTF8;
//邮件的标题
mail.Subject = "邮件的标题";
//内容的编码格式(这里是UTF-8)
mail.BodyEncoding = Encoding.UTF8;
//邮件的优先级
mail.Priority = MailPriority.Normal;
//发送内容,带一个图标,用于对方打开之后,回发你填写的地址信息
mail.Body=@"获取打开邮件的用户IP,图片由服务器自动生成:<img src='" + Receipt + "'>";
//收件人可在邮件里面
mail.Header.Add("Disposition-Notification-To","回执信息");
//发送邮箱的服务器地址
smtp.Host="发送邮箱的服务器地址smtp.163.com";
smtp.DeliveryMethod = SmtpDeliveryMethod.NetWork;
smtp.Timeout = 1000000;
//是否为SSL加密
smtp.EnableSsl = true;
//设置端口,如果不设置的话,默认端口为25
smtp.Port = 25;
smtp.UseDefaultCredentials = false;
//验证发件人的凭证
smtp.Credentials = new System.Net.NetworkCredential("邮箱账号","邮箱凭据");
//测试邮件
try
{
    //发送邮件
    smtp.Send(mail);
    Console.WriteLine("发送成功");
}
catch(Exception e)
{
    Console.WriteLine("发送失败:" + e.Message);
}
如有误,望及时指出,十分感谢!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值