那些年【深入.NET平台和C#编程】
一、深入.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#编程】的更多相关文章
- S2---深入.NET平台和C#编程的完美总结
1.NET简单解说 l 面向对象提升 OOP(Object Oriented Programming)面向对象编程 AOP:(Aspache Oriented Programming):面向切面编 ...
- 深入.net平台和c#编程 学习笔记
深入.net平台和c#编程 一:理解.nteFramwork与c# 1.1,:Microsoft.net框架概述 1.2:.net框架结构 1.3.:c#语言概述 1.4:体验框架类库的强大功能 二: ...
- 使用ReactiveCocoa实现iOS平台响应式编程
使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍一下FRP(Functional Reactive Prog ...
- [转]使用ReactiveCocoa实现iOS平台响应式编程
原文:http://www.itiger.me/?p=38 使用ReactiveCocoa实现iOS平台响应式编程 ReactiveCocoa和响应式编程 在说ReactiveCocoa之前,先要介绍 ...
- 《深入.NET平台和C#编程》内部测试题-笔试试卷答案
1) 以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deseria ...
- 我们可以用JAX-WS轻松实现JAVA平台与其他编程环境(.net等)的互操作
在 JAX-WS中,一个远程调用可以转换为一个基于XML的协议例如SOAP,在使用JAX-WS过程中,开发者不需要编写任何生成和处理SOAP消息的代码.JAX-WS的运行时实现会将这些API的调用转换 ...
- ROS Learning-029 (提高篇-007 A Mobile Base-05) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(精确的制定目标位置)
ROS 提高篇 之 A Mobile Base-05 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(精确的制定目标位置) 使用 odometry 消息类型 重写 out_and_ba ...
- ROS Learning-028 (提高篇-006 A Mobile Base-04) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(不精确的制定目标位置)
ROS 提高篇 之 A Mobile Base-04 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(不精确的制定目标位置) 我使用的虚拟机软件:VMware Workstation ...
- .NET平台和C#编程的总结
第一章 简单认识.NET框架 (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework ...
- 深入.NET平台和C#编程总结大全
对于初学者的你,等到你把这个看完之后就更清楚地认知.NET和C#编程了,好了废话不多说,开始吧! ...
随机推荐
- mysql学习之 sql语句的技巧及优化
一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...
- PHP的学习--RSA加密解密
PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...
- “RazorEngine.Templating.TemplateParsingException”类型的异常在 RazorEngine.NET4.0.dll 中发生,但未在用户代码中进行处理 其他信息: Expected model identifier.
这个问题是由于在cshtml中 引用了model这个单词 它可能和Model在解析时有冲突. 解决方法:把model换成别的单词就可以了.
- 用django创建一个项目
首先你得安装好python和django,然后配置好环境变量,安装python就不说了,从配置环境变量开始 1.配置环境变量 在我的电脑处点击右键,或者打开 控制面板\系统和安全\系统 -> 左 ...
- spring的BeanFactory加载过程
ApplicationContext spring = new ClassPathXmlApplicationContext("classpath*:spring/applicationCo ...
- 图解CSS3制作圆环形进度条的实例教程
圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能 ...
- ADFS3.0与SharePoint2013安装配置(原创)
现在越来越多的企业使用ADFS作为单点登录,我希望今天的内容能帮助大家了解如何配置ADFS和SharePoint 2013.安装配置SharePoint2013这块就不做具体描述了,今天主要讲一下怎么 ...
- 敏捷转型历程 - Sprint3 回顾会
我: Tech Leader 团队:团队成员分布在两个城市,我所在的城市包括我有4个成员,另外一个城市包括SM有7个成员.另外由于我们的BA离职了,我暂代IT 的PO 职位.PM和我在一个城市,但他不 ...
- SQLite学习笔记(十)&&加密
随着移动互联网的发展,手机使用越来越广泛,sqlite作为手机端存储的一种解决方案,使用也非常普遍.但是sqlite本身安全特性却比较弱,比如不支持用户权限,只要能获取到数据库文件就能进行访问:另外也 ...
- POJ1149 PIGS [最大流 建图]
PIGS Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20662 Accepted: 9435 Description ...