经典C#编程理解,概要,经典
一.NET框架
ADO.NET微软提供的一组类库,可以帮助程序员和数据库交互。
CLS(公共语言规范) CTS(通用语言类型)
类库:
可以看成一个承载了N个类的容器。
类库和命名空间:
一个类库对应一个命名空间,也可以多个。
二.自动属性
public string name{set;get;}
应用场景:
当不用做逻辑判定是,可以使用自动属性。
三.封装
信息隐藏,将抽象的数据和操作结合在一起,将私有字段封装成公有属性。
1.保证数据的安全性。
2.提供清晰的对外接口。
3.类内部实现可以任意修改,不影响其他类。
OOP面向对象编程。
AOP面向切面编程
OOD面向对象设计
OOA面向对象分析
DBA数据库管理员
CLS(公共语言规范)
CLR(公共语言运行时) CTS(同用类型)
.NET框架主键
FCL框架内库
第二章:
结构的定义:
1.结构体关键字是struct.
2.不用new,就可以给属性赋值。
3.结构体不用new的时候,Name不能是自动属性。
4.结构体是值类型,class是引用类型。
5.结构体中不能给字段赋初值,类中可以。
6.结构体不能生成构造,类会在后台自动形成。
public struct Student
{
public int id;
public int age;
public void Show()
{
console.WriteLine(”年龄:“id,age);
}
}
stattic void Main(string[]args)
{
student stu;创建学生结构
stu.id=1001;
stu.age=20;
stu.show();
}
值传递,引用类型
传递值类型不会保留,传递引用类型永久保留。
1.如果参数前有ref一定会保留。
2.如果参数前没有ref,想保留必须自身是引用类型。
3值类型不可以为null,引用类型可以为null.
4.值类型分配到栈上,引用类型保存到堆上。
三集合:
集合:将一堆数据放在在一起。
ArrayList list=new ArrayList();
foreach(object item in list)
{
console.WriteLine(item);
}
list.RemoveAt(1);删除下标为1的数据
1.使用Arraylist引入命名空间
2.集合扩容原理:集合中元素个数为0,则没有开辟空间。
3.默认集合中出现第一个元素,那么集合大小为4,如果放入第五个元素,那么就扩容8个。
Hashtable table=new Hashtable();
foreach(string key in table.keys)
{
console.wirteLine(key,table[key]);
}
HashTable类型在集合只能用foreach循环遍历,因为没有索引。
他是无序的,key值不能重复,不能用 RemoveAt(1);
List<> list=new List<>
他与ArrayList相似,list<>访问数据时不需类型转换。
Dictionary<k,y> diy=new Dictionary<k,y>
泛型集合可以作为类的一个属性,使用泛型集合必须实例化。
四.类的方法
构造函数
无参
public se()
{
this.id="00";
this.name="晓雯";
}
Main方法()
se en=new se();
console.writeLine(en.se);
带参
public se(string name,int age)
{
this.name=name;
this.age=age;
}
方法重载
如果方法名相同,参数列表(个数,顺序,类型)不同,和方法返回值无关。
构造函数同常与类名相同,构造函数不声明返回值,用public类型。
五.继承多态
继承优点:
减少代码冗余,实现代码复用。
如果一个类后面通过冒号又跟上另一个类,就用冒号前面的类为子类,冒号后面的类为父类,这就是继承关系。
子类不能继承构造
子类:派生类;
父类:基类
继承的两大特性
单根性,一个类只能有一个直接父类。
base关键字和protected修饰符
base调用构造(参数列表)父类参数构造的参数一致。
public string sayhi()
{
string message=string.Format("大家好{0},今年{1}岁“,base.name,base.Age);
}
多态
不同的对象对于同一个操作,做出的相应不同,目的是为了统一调用。
public virtual string sayhi()
{
}
public overrde string sayhi()
{
}
实现多态
1.父类中定义sayhi()方法,用virtual关键字定义虚方法。
2.在子类定义子类自己的sayhi()方法,用override关键字修饰就实现了对父类方法重写。
六.深入多态
1.一个类用abstract修饰,就是抽象类
2.抽象类不能用实例化
3.抽象方法不能有方法体
4.抽象方法必须在抽象类中
5.抽象方法存在的目的是,为了约束子类,中方发。
6.抽象类不能是静态类(static)或者是密封(staled)
7.抽象类中的所有抽象方法都必须被子类重写,除非子类本身就是抽象类。
public abstract class job
{
public jop(){}
public abstract void Execute();
}
public override void Execute()
{
}
里氏替换原则:子类对象可以替换父类对象。
面向对象的三大特性
封装:保证对象自身数据的完整性和安全性
继承:建立类之间的关系,实现代码复用。
多态:相同的方法调用可实现不同的实现方式。
七.XML
解析XML
private void button1_Click(object sender, EventArgs e)
2 {
3 XmlDocument doc = new XmlDocument();
4 doc.Load(@"..\..\CD.xml");
5
6 XmlElement root = null;
7 root = doc.DocumentElement;
8
9 XmlNodeList listNodes = null;
10 listNodes = root.SelectNodes("/bookstore/book/price");
11 foreach (XmlNode node in listNodes )
12 {
13 richTextBox1.Text += node.InnerText + "\n";
14 }
15 }
encoding
类型:System.String
编码方式属性的值。这是当将 XmlDocument 保存到文件或流时使用的编码方式;因此必须将其设置为 Encoding 类支持的字符串,否则 Save 失败。如果这是 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing) 或 String.Empty,则 Save 方法不在 XML 声明上写出编码方式属性,因此将使用默认的编码方式 UTF-8。
注意:如果将 XmlDocument 保存到 TextWriter 或 XmlTextWriter,则放弃该编码值。而改用 TextWriter 或 XmlTextWriter 的编码方式。这确保可以使用正确的编码方式读回写出的 XML。
2.XmlDocument类的方法
XmlDocument类的方法及说明如下表所示。
方法 |
说明 |
AppendChild |
将指定的节点添加到该节点的子节点列表的末尾 |
CreateAttribute |
创建具有指定名称的 XmlAttribute |
CreateCDataSection |
创建包含指定数据的 XmlCDataSection |
CreateComment |
创建包含指定数据的 XmlComment |
CreateDocumentFragment |
创建 XmlDocumentFragment |
CreateDocumentType |
返回新的 XmlDocumentType 对象 |
CreateElement |
创建 XmlElement |
CreateEntityReference |
创建具有指定名称的 XmlEntityReference |
CreateNavigator |
创建一个用于导航此文档的新 XPathNavigator 对象 |
CreateNode |
创建 XmlNode |
CreateProcessingInstruction |
创建一个具有指定名称和数据的 XmlProcessingInstruction |
CreateSignificantWhitespace |
创建一个 XmlSignificantWhitespace 节点 |
CreateTextNode |
创建具有指定文本的 XmlText |
CreateWhitespace |
创建一个 XmlWhitespace 节点 |
CreateXmlDeclaration |
创建一个具有指定值的 XmlDeclaration 节点 |
GetElementById |
获取具有指定 ID 的 XmlElement |
GetElementsByTagName |
返回一个 XmlNodeList ,它包含与指定名称匹配的所有元素的列表 |
GetNamespaceOfPrefix |
查找当前节点范围内离给定的前缀最近的 xmlns 声明,并返回声明中的命名空间 URI |
GetPrefixOfNamespace |
查找当前节点范围内离给定的命名空间 URI 最近的 xmlns 声明,并返回声明中定义的前缀 |
GetType |
获取当前实例的 Type |
ImportNode |
将节点从另一个文档导入到当前文档 |
InsertAfter |
将指定的节点紧接着插入指定的引用节点之后 |
InsertBefore |
将指定的节点紧接着插入指定的引用节点之前 |
Load |
加载指定的 XML 数据 |
LoadXml |
从指定的字符串加载 XML 文档 |
Normalize |
将XmlText 节点都转换成“正常”形式 |
PrependChild |
将指定的节点添加到该节点的子节点列表的开头 |
ReadNode |
根据 XmlReader 中的信息创建一个 XmlNode 对象。读取器必须定位在节点或属性上 |
RemoveAll |
移除当前节点的所有子节点和/或属性 |
RemoveChild |
移除指定的子节点 |
ReplaceChild |
用新节点替换旧节点 |
Save |
将 XML 文档保存到指定的位置 |
SelectNodes |
选择匹配XPath 表达式的节点列表 |
SelectSingleNode |
选择匹配 XPath 表达式的第一个 XmlNode |
Supports |
测试 DOM 实现是否实现特定的功能 |
Validate |
验证 XmlDocument 是不是 Schemas 属性中包含的 XML 架构定义语言 (XSD) 架构。 |
WriteContentTo |
将 XmlDocument 节点的所有子级保存到指定的 XmlWriter 中 |
WriteTo |
将 XmlDocument 节点保存到指定的 XmlWriter |
八.
文件操作
Append
若存在文件,则打开该文件并查找到文件尾,或者创建一个新文件。 这需要FileIOPermissionAccess.Append 权限。 FileMode.Append 只能与FileAccess.Write 一起使用。 试图查找文件尾之前的位置时会引发IOException 异常,并且任何试图读取的操作都会失败并引发NotSupportedException 异常。
Create
指定操作系统应创建新文件。 如果文件已存在,它将被覆盖。 这需要FileIOPermissionAccess.Write 权限。 FileMode.Create 等效于这样的请求:如果文件不存在,则使用 CreateNew;否则使用 Truncate。 如果该文件已存在但为隐藏文件,则将引发 UnauthorizedAccessException异常。
CreateNew
指定操作系统应创建新文件。 这需要 FileIOPermissionAccess.Write 权限。 如果文件已存在,则将引发 IOException异常。
Open
指定操作系统应打开现有文件。 打开文件的能力取决于 FileAccess 枚举所指定的值。 如果文件不存在,引发一个 System.IO.FileNotFoundException 异常。
OpenOrCreate
指定操作系统应打开文件(如果文件存在);否则,应创建新文件。 如果用FileAccess.Read 打开文件,则需要 FileIOPermissionAccess.Read权限。 如果文件访问为 FileAccess.Write,则需要 FileIOPermissionAccess.Write权限。 如果用 FileAccess.ReadWrite 打开文件,则同时需要
Truncate
指定操作系统应打开现有文件。 该文件被打开时,将被截断为零字节大小。 这需要 FileIOPermissionAccess.Write 权限。 尝试从使用 FileMode.Truncate打开的文件中进行读取将导致 ArgumentException 异常。
经典C#编程理解,概要,经典的更多相关文章
- IIS7应用程序池集成和经典的区别 对IIS7经典模式和集成模式的理解 程序池经典和集成的区别
IIS7应用程序池集成和经典的区别 IIS7应用程序池集成和经典的区别 IIS7应用程序池有集成和经典两种模式,根据微软官方的介绍, 集成模式,如果托管应用程序在采用集成模式的应用程序池中运行,服 ...
- <编程之美>经典面试题:求二叉树节点的最大距离(我的解法,最容易理解的版本?)
题目介绍: 如果把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两个节点之间的个数. 写一个程序求一棵二叉树中相距最远的两个节点之间的距离. 如下图所示, ...
- javascript的理解及经典案例
js的简介: JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言. 你可以利用JavaScript轻易的做出亲切的欢迎讯息.漂亮的数字钟.有广告效 ...
- (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO
http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...
- TCP/IP的经典网络编程
TCP/IP网络编程之四书五经 ...
- 算法竞赛入门经典+挑战编程+USACO
下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...
- 学习Javascript闭包(Closure)及几个经典面试题理解
今天遇到一个面试题,结果让我百思不得其解.后来在查阅了各种文档后,理清了来龙去脉.让我们先来看看这道题: function Foo( ){ var i = 0; return function( ){ ...
- 数据结构编程实验——chapter10-应用经典二叉树编程
二叉树不仅结构简单.节省内存,更重要是是这种结构有利于对数据的二分处理.之前我们提过,在二叉树的基础上能够派生很多经典的数据结构,也是下面我们将进行讨论的知识点: (1) 提高数据查找效率的二叉排 ...
- ANSYS经典APDL编程
在使用ANSYS的过程中的一些经验总结: Ansys Workbench 有限元分析虽然进入UI阶段,但是语言命令仍然是其基础核心. 1.ANSYS中的一些关键概念的理解; 参数化程序设计语言(APD ...
随机推荐
- MR并行算法编程过程中遇到问题的思考
1. Reducer 类中 reduce函数外定义的变量是在Reducer机器上属于全局变量的,因此,一台机器上reduce函数均可以对该变量的值做出贡献.如代码:(sum和count数据Reduce ...
- iOS学习16之OC集合遍历和数组排序
1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...
- Storm中Spout使用注意事项小结
Storm中Spout用于读取并向计算拓扑中发送数据源,最近在调试一个topology时遇到了系统qps低,处理速度达不到要求的问题,经过排查后发现是由于对Spout的使用模式不当导致的多线程同步等待 ...
- 数据仓库原理<2>:数据仓库系统的体系结构
1. 引言 本篇主要讲述数据仓库系统的体系结构与组成要素.数据集市与数据仓库之间的关系.元数据的定义与作用. 在上一篇,笔者介绍了数据仓库的定义: "数据仓库是一个面向主题的.集成的.不可更 ...
- 20145308刘昊阳 《Java程序设计》第7周学习总结
20145308刘昊阳 <Java程序设计>第7周学习总结 教材学习内容总结 第13章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 格林威治时间(GMT) 世界时(UT ...
- Leetcode Median of Two Sorted Arrays
There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted ...
- CF 9D. How many trees?(dp)
题目链接 以前做过类似的,USACO,2.3,开始数组开小了,导致数据乱了,然后超数据范围了,.. #include <cstdio> #include <iostream> ...
- C语言(2)
C语言(2)---变量 基本格式: 变量类型 变量名1[,变量名2,变量名3,...变量名n]: 注意: 1.在C语言中如果申请一个变量,里面存放小数,则用float表示,且在输出时需要注意prin ...
- Linux 下找出超過某些容量的檔案
找目前所在位置下,所有檔案大小超過3M的file,並列出檔名:大小 find . -type f -size +3M -exec ls -alh {} \; | awk '{print$9 " ...
- Linux-CentOS 6.5 mini 中没有curses.h的问题
1.直接贴过程 [fengbo@CentOS: jigsaw]$ rpm -q ncursesncurses-5.7-3.20090208.el6.i686[fengbo@CentOS: jigsaw ...