NET平台和C#
.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#的更多相关文章
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
Jexus 是一款运行于 Linux 平台,以支持 ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...
- Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司
一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...
- 我为Net狂 ~ 社交平台系列小集合!
微信平台: 我为Net狂(dotNetCrazy) 资源贴吧: http://tieba.baidu.com/f?kw=毒逆天 个人博客: http://dunitian.cnblogs.com/ h ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(76)-微信公众平台开发-网页授权
前言 网页授权是:应用或者网站请求你用你的微信帐号登录,同意之后第三方应用可以获取你的个人信息 网上说了一大堆参数,实际很难理解和猜透,我们以实际的代码来演示比较通俗易懂 配置 实现之前我们必须配置用 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(70)-微信公众平台开发-成为开发者
系列目录 前言: 一.阅读这段系列之前,你必须花半天时间大致阅读微信公众平台的API文档,我尽量以简短快速的语言与大家分享一个过程 二.借助微信公众平台SDK Senparc.Weixin for C ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(69)-微信公众平台开发-功能概述
系列目录 为什么要先发这个文章? 因为接下来的文章是关于微信开发的系列,心中一定要有一个概念,知道自己接下来要做什么功能. 而且微信到处都是坑,我首先要把微信与本地跑通起来才敢发布,否则中间出现坑导致 ...
- .NET平台开源项目速览(17)FluentConsole让你的控制台酷起来
从该系列的第一篇文章 .NET平台开源项目速览(1)SharpConfig配置文件读写组件 开始,不知不觉已经到第17篇了.每一次我们都是介绍一个小巧甚至微不足道的.NET平台的开源软件,或者学习,或 ...
随机推荐
- 一、两种方式初始化Mybatis
一.xml Configuration.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTY ...
- 安装windows7、windows8.1提示无法创建新的分区
有时候用原版系统镜像安装windows系统时,会提示“windows无法安装到这个磁盘.选中的磁盘采用GPT分区形式”,导致安装失败,下面就来讲解一下如何解决. 1.在系统提示无法安装的那一步,按住“ ...
- css控制文本框的只读属性的方法
css 封装整个只读文本框的属性: .TextBoxReadOnly{ border:1px solid #C0C0C0; text-align:left; background-color:#D3D ...
- linux下安装memcached过程
前一次已经安装过memcached,没有做记录,太久没有操作了也没有记录有点生疏,做一下笔记,已背后用. 下载文件 下载memcached服务端, ...
- Effective C++ 笔记三 资源管理
条款13:以对象管理资源 许多资源被动态分配于heap内而后被用于单一区块或函数内.它们应该在控制流离开那个区块或函数时被释放.标准程序库提供的auto_ptr正是针对这种形式而设计的特制产品.aut ...
- 如何使用Git上传项目代码到代码服务器
如你本机新建Git项目 地址:git@github.com:yourName/yourRepo.git,远程代码库服务器地址:192.168.10.1,远程代码服务器账户名密码:admin 密码:12 ...
- Liferay环境搭建实录
1. 安装Liferay IDE:打开Eclipse的Help-->Eclipse Marketplace,在下图所示搜索框中输入liferay,回车搜索: 搜索结果如下图所示: 点击insta ...
- Handler 原理分析和使用之HandlerThread
前面已经提到过Handler的原理以及Handler的三种用法.这里做一个非常简单的一个总结: Handler 是跨线程的Message处理.负责把Message推送到MessageQueue和处理. ...
- Git查看、删除、重命名远程分支和tag
这篇文章记录我在使用git的过程中碰到远程分支和tag的相关内容,提纲: 查看远程分支 删除远程分支和tag 删除不存在对应远程分支的本地分支 重命名远程分支 把本地tag推送到远程 获取远程tag ...
- NUnit + VS2010 简单入门
一.环境准备 1. NUnit 2.6.3 下载地址:https://launchpadlibrarian.net/153448476/NUnit-2.6.3.msi 2. VS2010 二.安装 N ...