您的位置:首页 > 编程语言 > C#

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: