经典C#编程理解,概要,经典
Posted 时间&煮雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典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#编程理解,概要,经典的主要内容,如果未能解决你的问题,请参考以下文章