C#学习笔记
2015-04-13 19:36
218 查看
C#中各种类库引用:
using System;所有其它命名空间的集合
using System.Data; 数据操作类
using System.IO;文件的操作类
using System.NET;支持对网络协议的编程的类
using System.Windows.Forms; 用于支持窗体设计的类
using System.Drawing;用于支持GDI+基本图形操作的类
using System.Collections;用于操作泛型集合或集合类
using Syetem.Text;支持文本操作的类
0..Net框架的量大核心组件
1.公共语言运行时 CLR Common Language Runtime
1.CLS
2.CTS
2.框架类库
1.C#的开发步骤: 1.启动开发软件
2.新建项目
3.编写代码
4.运行 CTRL+F5不执行调试直接运行 F5启动调试运行
2.C#调试的步骤:
1.设置断点
2.启动调试 F5启动调试 F9设置和删除断点 F10逐过程/F11逐语句
逐过程:一个一个函数的进行.不进入函数的内部....
逐语句:一条一条语句挨个进行,执行完当前函数的语句,跳出函数.继续执行下一语句
3.观察变量值
3.C#的注释: 1.单行注释 //
2.多行注释 /*..*/
3.文档注释 ///
4.块注释 #region #endregion
4.C#中的命名规范 1>只能所使用26个英文字母的大小写.和数字,'_'和符号....数字不能开头
2>变量用骆驼命名法...
5.C#里面的基本常识 1>namespace关键字创建包
2>using关键字引用包
3>class关键字创建类
4>Main()程序的入口 有四种写法
1.void Main(string[] args){}
2.void Main(){}
3.int Main(string[] args){}
4.int Main(){}
5.控制台的输入和输出
1.Console.WriteLine()或是Console.Write();前者为换行输出,后者不换行;
2.Console.ReadLine(); 当需要输入的是非字符串类型的时候.要用 数据类型.Parse(Console.ReadLine())的方法来转换.
`6.选择结构 if,if-else,else-if,都和java一样
switch(){}每条语句后面都得跟上Break;不然就会报错...如果两个Case中无任何可执行的语句块.也可以省略
7.循环结构 while do{}while(); for(){}和java一样
超级遍历: foreach( 数据类型 变量名 in 数组名){
元素代码快; //不可以改变其元素的本质
}
8.数组 数组的定义:数组是具有一组相同数据类型的集合
语法:数据类型[] 数组名; 例如:int[] num;
初始化:可以长度和值一起初始化
例如:int[] num=new int[3]{1,2,3}
9.属性 定义:结合了字段和方法的实现方式
get访问器用来返回相应的私有字段的值...必须有return返回值
set访问器用来设定相应的私有字段的值..
属性的类型可以是一个类或一个数组 TRUE
属性的访问类型:1.只读 2.只写 3.可读可写
1.只读 只写一个get方法{ return vlaue;}
2.只写 只写一个set方法{}
3.可读可写 二个全写 get{返回值类型;}
set{}
属性的编码规范
1.在为类的private私有字段命名时.最好使用_开头.随后的英文字母采用骆驼命名法
2.在为类的public公用属性命名时,采用帕斯卡命名
10.字符串的处理
1.字符串的比较
s1.Equals(s2) 比较一个字符串和另外一个字符串的值是否相等
s1==s2 比较两个字符串的地址是否相等.即是否引用的是同一对象
Compare(s1,s2) 比较两个字符串的大小关系(先后关系)
2.位置查询
s1.IndexOf(s) s在s1中出现的首位置
s1.LastIndexOf(s) s在s1中出现的最后位置
3.字符串的提取
s.Substring(index) 提取字符串s中.index以后的所有部分,包括index
s.Substring(index,length) 提取字符串s中.从index位置开始,长度为length的字符串部分
4.字符串大小写转换
ToLower() 获得字符串的小写
ToUpper() 获得字符串的大写
5.字符串的连接
Join(s,string[] s1) 将字符串换数组中的所有字符串用字符s连接
6.字符串的拆分
s1.Split(s) 将字符串s1与指定的字符s分割.得到一个字符串数组
7.去空格
s1.Trim() 去掉字符串s1前后的空格.ne
11.随机数的产生
Random r=new Random() --当括号里面放上随机种子...产生的随机数将会固定
int num=r.Next(1,10) --随机产生1-10的随机数.不包括10
12.各种函数参数的传递方式
1.按值传递 值类型参数
2.按引用传递 值类型参数
3.按值传递 引用类型参数
4.按引用传递 引用类型参数
在上述的各种参数的传递方式中...值会改变的为(2,3,4)
13.集合
ArrayList //可以添加任意Object类型的值
ArrayList list=new ArrayList();
list.Add(Object) //添加对象
通过下标来访问 list[index];
删除对象可以通过下标和对象来删除
list.RemoveAt(index)和list.Remove(Object)
遍历:
for(int i=0;i<list.Count;i++)
{
SE o=(SE)list[i];
Console.WriteLine(o.Funcation());
}
================
foreach(SE o in list)
{
//SE o=(SE)list[i];
Console.WriteLine(o.Funcation());
}
HashTable //可以添加任意Object类型的值
HashTable ht=new HashTable();
ht.Add(Keys,Values);
通过键值对集合进行访问
ht.Remove(Key);
遍历:
foreach(SE o in ht.Keys) //遍历集合中的Key值
{
Console.WriteLine(o.ToString())
}
foreach(SE o in ht.Values)
{
//SE ob=(SE)O;
Console.WriteLine(ob.Funcation());
}
foeach(Dictionary o in ht)
{
Console.WriteLine(o.Key); //HashTable中的键值
Console.WriteLine(o.Value); //HashTable中的对象值
}
14.泛型集合
List<SE> list=new List<SE>();
list.Add(Object); //往集合中添加对象
list.RemoveAt(index); //删除集合中指定下标的对象
list.Remove(Object); //删除集合中指定的对象
遍历:
for(int i=0;i<list.Count;i++)
{
Console.WriteLine(list[i].Funcation()); //通过下标循环遍历的方式
}
================
foreach(SE o in list)
{
Console.WriteLine(o.Funcation()); //通过遍历对象的方式
}
Dictionary<Keys,Values> dc=new Dictionary<Keys,Values>();
dc.Add(Key,Value); //往集合中添加元素
dc.Remove(Key); //通过键值来删除集合中的指定元素
遍历:
foreach(string/int se in dc.Keys )
{
Console.WriteLine(se.ToString());
}
foreach(SE se in dc.Values)
{
Console.WriteLine(se.Funcation());
}
foreach(KeyValuePair<string,SE> se in dc)
{
Console.WriteLine(se.Key.ToString());
Console.WriteLine(se.Value);
}
15.文件流
1.创建文件流
FileStream fs=new FileStream(path,FileMode.Create); //Create 用于指定的文件创建...如果存在,则改写文件.如果不存在,则重新创建
//CreateNew 用于创建一个文件.如果文件存在,则发生异常.
//Open 用于打开一个文件.如果存在,则打开.如果不存在.则发生异常
//OpenOrCreate 如果指定的文件存在.则打开.如若不存在,则新建一个文件夹.并打开
//Append 打开现有的文件.并在文件的尾部追加内容
2.创建写入器
StreamWriter sw=new StreamWriter(fs,Encoding.Default);
sw.Write(); //常见的写入器
sw.WriteLine(); //写入一行后自动换行
sw.Close(); //关闭写入器
3.创建读取器
StreamReader sr=new StreamReader(fs,Encoding.Default);
sr.ReadLine(); //读取文件流中的一行数据.并反悔字符串
sr.ReadToEnd(); //从当前位置.读取到末尾...并返回字符串
sr.Close(); //关闭读取器
4.关闭写入器
sw.Close();
5.关闭读取器
sr.Close();
6.关闭文件流
fs.Close();
16.文件和目录的操作
1>File:
Exists(string path);//用于检测.当前目录下的文件中是否存在该目录文件...返回布尔值类型
Copy(oldPath,newPath); //用于将当前目录下指定的文件.复制到指定的目录文件下
Move(oldPath,newPath); //用于将当前目录下的文件.剪切到指定的目录下的
Delete(string path); //删除,指定目录的文件
2>Directory:
Exists(string path);//用于检测.当前目录下的文件中是否存在该目录文件...返回布尔值类型
Move(oldPath,newPath); //用于将当前目录下的文件.剪切到指定的目录下的
Delete(string path); //删除,指定目录的文件
3>FileInfo:
Exists; //用于检测指定文件是否存在
Extension; //获取文件的扩展名
Name; //获取文件名
FullName; //获取文件的目录或完整的文件的路径
Directory.Name; //获取当前文件的上一级的目录
DirectoryName; //获取当前文件的完整的目录
CopyTo(string path); //将现有文件的复制到指定的新文件
Delete(); //删除文件
MoveTo(string path); //剪切文件到新文件夹
4>DirectoryInfo:
DirectoryInfo di=new Directoryinfo(path);
DirectoryInfo[] dc=di.GetDirecrories(); //获取当前目录的子目录
FileInfo[] fi=di.GetFiles(); //获取当前目录的文件列表
16.序列化和反序列化
1>序列化文件
1.将需要序列化的类标识为[Serializable]
2.定义文件流
FileStream fs=new FileStream(string path,FileMode.Create);
3.创建二进制方式
BinaryFormatter bf=new BinaryFormatter();
4.序列化存储对象
bf.Serialize(fs,需要序列化的对象或集合)
5.关闭文件流
fs.Close();
2>反序列化文件
1.定义文件流
FileStream fs=new FileStream(string path,FileMode.Open);
2.创建二进制方式
BinaryFormatter bf=new BinaryFormatter();
3.序列化存储对象
序列化对象=bf.Deserialize(fs) as 对象或集合的类型;
4.关闭文件流
fs.Close();
using System;所有其它命名空间的集合
using System.Data; 数据操作类
using System.IO;文件的操作类
using System.NET;支持对网络协议的编程的类
using System.Windows.Forms; 用于支持窗体设计的类
using System.Drawing;用于支持GDI+基本图形操作的类
using System.Collections;用于操作泛型集合或集合类
using Syetem.Text;支持文本操作的类
0..Net框架的量大核心组件
1.公共语言运行时 CLR Common Language Runtime
1.CLS
2.CTS
2.框架类库
1.C#的开发步骤: 1.启动开发软件
2.新建项目
3.编写代码
4.运行 CTRL+F5不执行调试直接运行 F5启动调试运行
2.C#调试的步骤:
1.设置断点
2.启动调试 F5启动调试 F9设置和删除断点 F10逐过程/F11逐语句
逐过程:一个一个函数的进行.不进入函数的内部....
逐语句:一条一条语句挨个进行,执行完当前函数的语句,跳出函数.继续执行下一语句
3.观察变量值
3.C#的注释: 1.单行注释 //
2.多行注释 /*..*/
3.文档注释 ///
4.块注释 #region #endregion
4.C#中的命名规范 1>只能所使用26个英文字母的大小写.和数字,'_'和符号....数字不能开头
2>变量用骆驼命名法...
5.C#里面的基本常识 1>namespace关键字创建包
2>using关键字引用包
3>class关键字创建类
4>Main()程序的入口 有四种写法
1.void Main(string[] args){}
2.void Main(){}
3.int Main(string[] args){}
4.int Main(){}
5.控制台的输入和输出
1.Console.WriteLine()或是Console.Write();前者为换行输出,后者不换行;
2.Console.ReadLine(); 当需要输入的是非字符串类型的时候.要用 数据类型.Parse(Console.ReadLine())的方法来转换.
`6.选择结构 if,if-else,else-if,都和java一样
switch(){}每条语句后面都得跟上Break;不然就会报错...如果两个Case中无任何可执行的语句块.也可以省略
7.循环结构 while do{}while(); for(){}和java一样
超级遍历: foreach( 数据类型 变量名 in 数组名){
元素代码快; //不可以改变其元素的本质
}
8.数组 数组的定义:数组是具有一组相同数据类型的集合
语法:数据类型[] 数组名; 例如:int[] num;
初始化:可以长度和值一起初始化
例如:int[] num=new int[3]{1,2,3}
9.属性 定义:结合了字段和方法的实现方式
get访问器用来返回相应的私有字段的值...必须有return返回值
set访问器用来设定相应的私有字段的值..
属性的类型可以是一个类或一个数组 TRUE
属性的访问类型:1.只读 2.只写 3.可读可写
1.只读 只写一个get方法{ return vlaue;}
2.只写 只写一个set方法{}
3.可读可写 二个全写 get{返回值类型;}
set{}
属性的编码规范
1.在为类的private私有字段命名时.最好使用_开头.随后的英文字母采用骆驼命名法
2.在为类的public公用属性命名时,采用帕斯卡命名
10.字符串的处理
1.字符串的比较
s1.Equals(s2) 比较一个字符串和另外一个字符串的值是否相等
s1==s2 比较两个字符串的地址是否相等.即是否引用的是同一对象
Compare(s1,s2) 比较两个字符串的大小关系(先后关系)
2.位置查询
s1.IndexOf(s) s在s1中出现的首位置
s1.LastIndexOf(s) s在s1中出现的最后位置
3.字符串的提取
s.Substring(index) 提取字符串s中.index以后的所有部分,包括index
s.Substring(index,length) 提取字符串s中.从index位置开始,长度为length的字符串部分
4.字符串大小写转换
ToLower() 获得字符串的小写
ToUpper() 获得字符串的大写
5.字符串的连接
Join(s,string[] s1) 将字符串换数组中的所有字符串用字符s连接
6.字符串的拆分
s1.Split(s) 将字符串s1与指定的字符s分割.得到一个字符串数组
7.去空格
s1.Trim() 去掉字符串s1前后的空格.ne
11.随机数的产生
Random r=new Random() --当括号里面放上随机种子...产生的随机数将会固定
int num=r.Next(1,10) --随机产生1-10的随机数.不包括10
12.各种函数参数的传递方式
1.按值传递 值类型参数
2.按引用传递 值类型参数
3.按值传递 引用类型参数
4.按引用传递 引用类型参数
在上述的各种参数的传递方式中...值会改变的为(2,3,4)
13.集合
ArrayList //可以添加任意Object类型的值
ArrayList list=new ArrayList();
list.Add(Object) //添加对象
通过下标来访问 list[index];
删除对象可以通过下标和对象来删除
list.RemoveAt(index)和list.Remove(Object)
遍历:
for(int i=0;i<list.Count;i++)
{
SE o=(SE)list[i];
Console.WriteLine(o.Funcation());
}
================
foreach(SE o in list)
{
//SE o=(SE)list[i];
Console.WriteLine(o.Funcation());
}
HashTable //可以添加任意Object类型的值
HashTable ht=new HashTable();
ht.Add(Keys,Values);
通过键值对集合进行访问
ht.Remove(Key);
遍历:
foreach(SE o in ht.Keys) //遍历集合中的Key值
{
Console.WriteLine(o.ToString())
}
foreach(SE o in ht.Values)
{
//SE ob=(SE)O;
Console.WriteLine(ob.Funcation());
}
foeach(Dictionary o in ht)
{
Console.WriteLine(o.Key); //HashTable中的键值
Console.WriteLine(o.Value); //HashTable中的对象值
}
14.泛型集合
List<SE> list=new List<SE>();
list.Add(Object); //往集合中添加对象
list.RemoveAt(index); //删除集合中指定下标的对象
list.Remove(Object); //删除集合中指定的对象
遍历:
for(int i=0;i<list.Count;i++)
{
Console.WriteLine(list[i].Funcation()); //通过下标循环遍历的方式
}
================
foreach(SE o in list)
{
Console.WriteLine(o.Funcation()); //通过遍历对象的方式
}
Dictionary<Keys,Values> dc=new Dictionary<Keys,Values>();
dc.Add(Key,Value); //往集合中添加元素
dc.Remove(Key); //通过键值来删除集合中的指定元素
遍历:
foreach(string/int se in dc.Keys )
{
Console.WriteLine(se.ToString());
}
foreach(SE se in dc.Values)
{
Console.WriteLine(se.Funcation());
}
foreach(KeyValuePair<string,SE> se in dc)
{
Console.WriteLine(se.Key.ToString());
Console.WriteLine(se.Value);
}
15.文件流
1.创建文件流
FileStream fs=new FileStream(path,FileMode.Create); //Create 用于指定的文件创建...如果存在,则改写文件.如果不存在,则重新创建
//CreateNew 用于创建一个文件.如果文件存在,则发生异常.
//Open 用于打开一个文件.如果存在,则打开.如果不存在.则发生异常
//OpenOrCreate 如果指定的文件存在.则打开.如若不存在,则新建一个文件夹.并打开
//Append 打开现有的文件.并在文件的尾部追加内容
2.创建写入器
StreamWriter sw=new StreamWriter(fs,Encoding.Default);
sw.Write(); //常见的写入器
sw.WriteLine(); //写入一行后自动换行
sw.Close(); //关闭写入器
3.创建读取器
StreamReader sr=new StreamReader(fs,Encoding.Default);
sr.ReadLine(); //读取文件流中的一行数据.并反悔字符串
sr.ReadToEnd(); //从当前位置.读取到末尾...并返回字符串
sr.Close(); //关闭读取器
4.关闭写入器
sw.Close();
5.关闭读取器
sr.Close();
6.关闭文件流
fs.Close();
16.文件和目录的操作
1>File:
Exists(string path);//用于检测.当前目录下的文件中是否存在该目录文件...返回布尔值类型
Copy(oldPath,newPath); //用于将当前目录下指定的文件.复制到指定的目录文件下
Move(oldPath,newPath); //用于将当前目录下的文件.剪切到指定的目录下的
Delete(string path); //删除,指定目录的文件
2>Directory:
Exists(string path);//用于检测.当前目录下的文件中是否存在该目录文件...返回布尔值类型
Move(oldPath,newPath); //用于将当前目录下的文件.剪切到指定的目录下的
Delete(string path); //删除,指定目录的文件
3>FileInfo:
Exists; //用于检测指定文件是否存在
Extension; //获取文件的扩展名
Name; //获取文件名
FullName; //获取文件的目录或完整的文件的路径
Directory.Name; //获取当前文件的上一级的目录
DirectoryName; //获取当前文件的完整的目录
CopyTo(string path); //将现有文件的复制到指定的新文件
Delete(); //删除文件
MoveTo(string path); //剪切文件到新文件夹
4>DirectoryInfo:
DirectoryInfo di=new Directoryinfo(path);
DirectoryInfo[] dc=di.GetDirecrories(); //获取当前目录的子目录
FileInfo[] fi=di.GetFiles(); //获取当前目录的文件列表
16.序列化和反序列化
1>序列化文件
1.将需要序列化的类标识为[Serializable]
2.定义文件流
FileStream fs=new FileStream(string path,FileMode.Create);
3.创建二进制方式
BinaryFormatter bf=new BinaryFormatter();
4.序列化存储对象
bf.Serialize(fs,需要序列化的对象或集合)
5.关闭文件流
fs.Close();
2>反序列化文件
1.定义文件流
FileStream fs=new FileStream(string path,FileMode.Open);
2.创建二进制方式
BinaryFormatter bf=new BinaryFormatter();
3.序列化存储对象
序列化对象=bf.Deserialize(fs) as 对象或集合的类型;
4.关闭文件流
fs.Close();