经典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 ...
随机推荐
- wordpress修改上传文件大小限制
在为有的客户搭建 WordPress 网站时,有时会遇到因为所在的服务器限制了上传文件大小而无法上传较大的附件,WordPress的媒体文件上传可以看到,大多数都是2MB或者8MB.如果是图片的话可能 ...
- 经典收藏 50个jQuery Mobile开发技巧集萃
http://www.cnblogs.com/chu888chu888/archive/2011/11/10/2244181.html 1.Backbone移动实例 这是在Safari中运行的一款Ba ...
- C#数组的声明方式
C#数组的五种声明方式 一.声明一个未经初始化的数组引用,以后可以把这引用初使化为一个数组实例 int[] intArray; intArray = new int[10]; 注:数组的引用必须以相同 ...
- BZOJ3654 : 图样图森破
考虑枚举回文中心,然后向两边扩展,当匹配到当前串的边界的时候,枚举下一个串接上. 这个过程可以通过记忆化搜索来完成,设: $f[i][0]$表示对于$i$这个位置,$[i,串结尾]$等待匹配的最长回文 ...
- Document 按照xml格式输出
private void GetXMLDocument(Document doc) { OutputFormat format1 = new OutputFormat(" ", t ...
- Oracle中Cursor的用法
关键字 概念 类型 异常处理 一 概念 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁 盘的表中 ...
- Codeforces Round #244 (Div. 2) A. Police Recruits
题目的意思就是找出未能及时处理的犯罪数, #include <iostream> using namespace std; int main(){ int n; cin >> ...
- 洛谷 P1967 货车运输 Label: 倍增LCA && 最小瓶颈路
题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多 ...
- 【BZOJ】1119: [POI2009]SLO
题意 长度为\(n(1 \le n \le 1000000)\)的账单,\(+\)表示存1,\(-\)表示取1,任意时刻存款不会为负.初始有\(p\),最终有\(q\).每一次可以耗时\(x\)将某位 ...
- Codeforces Beta Round #3
A题,水题,还是无法1Y. B题,题意是类似背包的问题,在v的容量下,有1重量和2重量的,如果达到价值最大. 贪心,写的很恶心.看着数据过了. 奇数的时候,先选一个1.之后然后1+1 和 2 比较就行 ...