一、深入.NET框架

1..NET框架具有两个组件:CLR(公共语言运行时)和FCL(框架类库),CLR是.NET框架的基础

2.框架核心类库:

System.Collections.Generic:泛型操作

System.IO:IO流操作

System.Net:网络编程

System.Data:ADO.NET结构的类的访问

System.Windows.Forms:窗体操作

System.Drawing:图形操作

二、深入C#数据类型

1.结构体:结构体是由struct修饰的类,结构体是值类型(枚举也是值类型)

public struct Student
{
}

2.拆箱和装箱:

装箱:就是把值类型转换为引用类型

object o=1;

拆箱:就是把引用类型转换为值类型

int num=(int)o;

3.值传递和引用传递(有无ref修饰)

a.有ref修饰时,修改的值会永久保留

b.无ref修饰时,是值类型的,修改的值不会永久保留

c.无ref修饰时,是引用类型的,修改的值会永久保留

三、泛型集合

1.集合的概念:

集合就是将一堆数据类型的数据放在一起的一种容器,和数组是很相似的东西。

2.集合的分类以及声明方法

a.集合分为非泛型和泛型集合,非泛型又分单列(ArrayList)和双列(Hashtable),泛型也分单列(List<T>)和双列(Dictionary<K,V>)。

单列的T数据类型可以为object类型,双列的K,V也可以是object类型

b.集合的声明

ArrayList list=new ArrayList();

Hashtable list=new Hashtable();

List<T> list=new List<T>();

Dictionary<K,V> list=new Dictionary<K,V>();

3.集合的方法和属性

1.Add(),增加数据的方法

2.Remove(),删除数据的方法,()里填的是一整条的数据,单列集合的删除,集合会去自动维护数据,这样集合不会出现某个索引的值是为空的

3.RemoveAt(),同样也是删除数据的方法,()里填的是索引(单列)双列没有RemoveAt()方法,

4.Clear(),清空集合的所有数据

5.Count属性,可以得到集合有几条数据

6.Capacity属性,集合的容量,集合的容量是成倍(二倍)的增加的,Count为0时,Capacity为0,Count为1时,Capacity为4

7.Contains(),单列集合用来判断某个数据是否存在

8.ContainsKey(),双列判断是否存在某个Key值

9.ContainsValue(),双列判断是否存在某个Value值

4.集合的遍历方法

HashTable和Dictionary遍历不同就是,遍历值类型的时候,HashTable需要进行类型转换(拆箱,装箱)

HashTable:

(1).通过Key值遍历 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }

(2).通过value值遍历 foreach (Student item in list.Values) { Console.WriteLine((Student)item.Name); }

(3).通过整体的双列集合遍历 foreach (DictionaryEntry item in list) { Console.WriteLine(item.Key); Console.WriteLine(((Student)item.Value).Name); }

Dictionary:

(1).通过Key值遍历 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }

(2).通过value值遍历 foreach (Student item in list.Values) { Console.WriteLine(item.Name); }

(3).通过整体遍历 foreach (KeyValuePair<T,V> item in list) { Console.WriteLine(item.Key); Console.WriteLine((item.Value).Name); }

四、深入类的方法

1.方法重载:通过传的参数的不同从而调用不同的方法,方法名相同,参数类型不同,参数顺序不同,参数个数不同,和返回值无关

参数类型不同:

public void Play(int num){};

public void Play(string name){};

参数顺序不同:

public void Play(int num,int age){};

public void Play(int age,int num){};

参数个数不同:

public void Play(int num){};

public void Play(string name,int num){};

和返回值无关:

public string Play(int num){};

public int Play(int num){};

2.类的构造:和类名相同,无返回值

无参构造:

public class Student

{

  public Student(){};

}

带参构造:有带参构造,必须写出类的无参构造

public class Student

{

  public string Name { get; set; }

  public Student(){};

  public Student(string name){this.Name=name};

}

3.对象间的交互

一个电视类:

public class Tv

{

  public void Play(){};

}

一个电视工具类

public class TvTool

{

  public void Play()

  {

    Tv t=new Tv();

    t.Play();

  }; 

}

主程序中:

TvTool tool=new TvTool();

tool.Play();

从而只有控制一个类去控制别的类

五、继承和多态

1.继承:子类继承父类,子类便可以使用父类的属性和方法,继承用“:”(冒号)实现继承

父类:

public class Man

{

  int age;

  string name;

  public void Say()

  {

  };

}

子类:

public class Student:Man

{

  public void Play()

  {

    方法里便可以使用父类的属性和方法

    age=1;

    name="张三";

    Say();

  };

}

2.虚方法实现多态:通过子类重新父类的方法,实现多态,从而一个方法实现不同效果

父类:

public class Man

{

  public virtual void Say()

  {

  }

}

子类:

public class Student:Man

{

  public override void Play()

  {

    我是一个学生

  }

}

public class Super:Man

{

  public override void Play()

  {

    我是一个超人

  }

}

六、深入多态

1.里氏原则:父类实力化子类不会影响程序

2. is 和  as

is操作符用于检查对象和指定的类型

as操作符用于两个对象之间的类型转换

3.抽象类实现多态

父类:

public abstract class Man

{

  public abstract void Say()

  {

  }

   public void Play(){}

  抽象类可以有普通方法

}

子类:

public class Student:Man

{

  public override void Play()

  {

    我是一个学生

  }

}

public class Super:Man

{

  public override void Play()

  {

    我是一个超人

  }

}

七、Xml操作

1.Xml解析

XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode root = doc.DocumentElement;

foreach (XmlNode item in root.ChildNodes)
{  

switch (item.Name)
{
case "Name":
movieName = item.InnerText;
m.MovieName = movieName;
break;
case "Poster":
playBill = item.InnerText;
m.Poster = playBill;
break;

}

可以将Xml数据放在集合中

也可以通过索引器进行解析到Xml数据

2.关于XmlNode对象的属性

InnerText:当前节点的值

Name:当前节点的名称

ChildNodes:当前节点的所有子节点

3.treeView绑定节点

TreeNode tn = new TreeNode(item);
tn.Tag = Schedule.Items[item].Movie;
Treeview.Nodes.Add(tn);

八、文件操作

1.读写文件

写:

FileStream fs=new FileStream(path,FileMode.Create);

StreamWriter sw=new StreamWriter(fs);

sw.Writer(需要些的文本);

sw.Close();     后开的先关流

fs.Close();

读:

FileStream fs=new FileStream(path,FileMode.Open);

StreamWriter sw=new StreamWriter(fs,Ending.Default);

String txt=sw.ReadToEnd();

sw.Close();     

fs.Close();

2.相关属性

Exists:潘判断是否存在

Extension:后缀名

Naem:文件名

FullName:文件地址

那些年【深入.NET平台和C#编程】的更多相关文章

  1. S2---深入.NET平台和C#编程的完美总结

    1.NET简单解说 l 面向对象提升 OOP(Object Oriented  Programming)面向对象编程 AOP:(Aspache  Oriented Programming):面向切面编 ...

  2. 深入.net平台和c#编程 学习笔记

    深入.net平台和c#编程 一:理解.nteFramwork与c# 1.1,:Microsoft.net框架概述 1.2:.net框架结构 1.3.:c#语言概述 1.4:体验框架类库的强大功能 二: ...

  3. 使用ReactiveCocoa实现iOS平台响应式编程

    使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Prog ...

  4. [转]使用ReactiveCocoa实现iOS平台响应式编程

    原文:http://www.itiger.me/?p=38 使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍 ...

  5. 《深入.NET平台和C#编程》内部测试题-笔试试卷答案

    1)      以下关于序列化和反序列化的描述错误的是( C). a)      序列化是将对象的状态存储到特定存储介质中的过程 b)      二进制格式化器的Serialize()和Deseria ...

  6. 我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作

    在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码.JAX-WS的运行时实现会将这些API的调用转换 ...

  7. ROS Learning-029 (提高篇-007 A Mobile Base-05) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(精确的制定目标位置)

    ROS 提高篇 之 A Mobile Base-05 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(精确的制定目标位置) 使用 odometry 消息类型 重写 out_and_ba ...

  8. ROS Learning-028 (提高篇-006 A Mobile Base-04) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(不精确的制定目标位置)

    ROS 提高篇 之 A Mobile Base-04 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(不精确的制定目标位置) 我使用的虚拟机软件:VMware Workstation ...

  9. .NET平台和C#编程的总结

    第一章   简单认识.NET框架    (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework ...

  10. 深入.NET平台和C#编程总结大全

    对于初学者的你,等到你把这个看完之后就更清楚地认知.NET和C#编程了,好了废话不多说,开始吧!                                                     ...

随机推荐

  1. TODO:macOS上ThinkPHP5和Semantic-UI集成

    TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(67)-MVC与ECharts

    系列目录 ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...

  3. JQuery 复制粘贴上传图片插件(textarea 和 tinyMCE)

    开源地址:https://github.com/yuezhongxin/paste-upload-image.js 支持 Ctrl+C/Ctrl+V 上传,支持拖拽上传,也支持 QQ/微信截图上传. ...

  4. Linux常用指令指南,终端装逼利器

    最近搞了台Macbook Pro,就学习了一下Linux命令,在网上查了些资料,看了本书叫<快乐的 Linux 命令行>,里面涉及到了各个方面的命令. 在此将常用的整理出来,以备将来使用. ...

  5. [内核笔记1]内核文件结构与缓存——inode和对应描述

    由来:公司内部外网记录日志的方式现在都是通过Nginx模块收到数据发送到系统消息队列,然后由另外一个进程来从消息队列读取然后写回磁盘这样的操作,尽量的减少Nginx的阻塞. 但是由于System/V消 ...

  6. 多线程条件通行工具——CountDownLatch

    CountDownLatch的作用是,线程进入等待后,需要计数器达到0才能通行. CountDownLatch(int)构造方法,指定初始计数. await()等待计数减至0. await(long, ...

  7. 最新的 cocoaPods 安装方法

    经过努力终于发现了最新的 解决cocoaPods安装的办法: taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务 第一步:安装rvm, 不管需不需要升级ruby,rvm可以 ...

  8. maven 快照

    大型应用软件一般由多个模块组成,一般它是多个团队开发同一个应用程序的不同模块,这是比较常见的场景.例如,一个团队正在对应用程序的应用程序,用户界面项目(app-ui.jar:1.0) 的前端进行开发, ...

  9. NOT IN 和NOT EXISTS

    今天写了一个简单的NOT IN语句,结果跟预期大相径庭,百度之发现深坑一个,遂录之. 登陆账户表logins code name status a admin N b guest N c member ...

  10. 跟着老男孩教育学Python开发【第五篇】:模块

    递归的案例:阶乘 1*2*3*4*5*6*7- def func(num):     if num == 1:         return 1     return num * func(num - ...