http://www.web008.net

美高梅163888民用总结深切,大家在雨天学习泛型集结

深入.NET平台和C#编程

私家总计深刻.NET平台和C#编程,

  前言:学习C#编制程序应该有多少个月了,作为二个新手,未有资格来评价怎样。独有对协和所学实行一个总括,恐怕有一点都不小心的地点,万望谅解。

         一·深入.NET框架

      .NET框架(.NET Framework),他是开垦.NET应用程序的宗旨幼功。

.NET框架的种类布局

  支持C#、VB、.NET、c++、等语言的费用,也等于大家所说的跨语言开拓。

.NET框架具备八个第生龙活虎组件:CLWrangler和FCL。(CL宝马X5是Common Language Runtime即公共语言实行时;FCL是Framework Class Library即框架类库)

.NET框架主旨类库及其功效

美高梅163888 1

 

类和对象

类定义了大器晚成组概念模型,而目的是动真格的的实业。

set访谈器只写;get访谈器只读。

在vs中活动属性prop+双击Tab键

封装

 1.保险数据的安全性。

2.提供清晰的对外接口

3.类内部能够私下改良,不影响别的类。

类图

美高梅163888 2

 

二.深入C#数据类型

值类型应用处目

值类型蕴含宗旨数据类型,和枚举类型,构造体等。

援用类型包涵string 数组,类和接口。

结构体:

能够有字段,可以有艺术。

概念时字段不可能被赋初值。

无须new。注明布局对象后必须给组织成员赋初值。

拆箱和装箱

示例:

int a=1;

美高梅163888,object o=i;//装箱

int j=(int)o;//拆箱

值传递和引用传递

援引类型作为参数时:
1、在改变变量本人时,结果相同于值传递,即不会退换传递前的变量的值
2、在校订变量的品质或字段时,才是引用传递,会耳濡目染到传递前的变量的值
3、参数使用了ref后,才是真正的援引传递,不管修改变量自己依旧订正变量的习性或字段,都会影响到传递前的变量的值

值传递:传的是目的的值拷贝。(即函数内部参考新闻数对象是调用时传递的对象的栈中对象的正片。卡塔尔
援用传递:传的是栈中对象的地点。(即函数内部参考音信数对象与调用时传递的目的完全部都以如出意气风发辙栈中目的。卡塔尔(قطر‎

三.使用集结协会有关数据

System.Collections 命名空间饱含接口和类,这个接口和类定义种种对象(如列表、队列、位数组、哈希表和字典)的聚合。
System.Collections.Generic 命名空间包蕴定义泛型集合的接口和类,泛型集结允许客户创设强类型会集,它能提供比非泛型强类型集合越来越好的花色安全性和总体性。
System.Collections.Specialized 命名空间满含专项使用的和强类型的聚众,比方,链接的列表词典、位向量以致只包蕴字符串的集纳。

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();

            Console.WriteLine("遍历方法一:");
            foreach (int item in list)//不要强制转换
            {
                Console.WriteLine(item);//遍历方法一
            }

            Console.WriteLine("遍历方法二:");
            for (int i = 0; i < list.Count; i++)//数组是length
            {
                int number = (int)list[i];//一定要强制转换
                Console.WriteLine(number);//遍历方法二

            }
        }
    }
}

  1、哈希表(Hashtable)简述
     在.NET Framework中,Hashtable是System.Collections命名空间提供的叁个器皿,用于拍卖和显现雷同key/value的键值对,在那之中key平日可用来非常的慢搜索,同期key是分别朗朗上口写;value用于存储对应于key的值。Hashtable中key/value键值对均为object类型,所以Hashtable能够支撑其他类型的key/value键值对.

2、哈希表的简易操作
在哈希表中增添叁个key/value键值对:HashtableObject.Add(key,value卡塔尔(英语:State of Qatar);
在哈希表中除去某些key/value键值对:HashtableObject.Remove(key卡塔尔;
从哈希表中移除全体因素:                HashtableObject.Clear(卡塔尔(英语:State of Qatar); 
判断哈希表是或不是满含特定键key:         HashtableObject.Contains(key卡塔尔;
遍历

foreach(DictionaryEntry item in Hashtable)

{

item.Key;

item.Values;

}

泛型最广大的用项是泛型集结,命名空间System.Collections.Generic 中蕴藏了某些依照泛型的集结类,使用泛型集结类能够提供越来越高的门类安全性,还应该有更加高的质量,幸免了非泛型群集的再次的装箱和拆箱。 
    比超级多非泛型会集类都有相应的泛型集结类,上边是常用的非泛型群集类以至相应的泛型群集类:

非泛型集合类 泛型集合类
ArrayList List<T>
HashTable DIctionary<T>
Queue Queue<T>
Stack Stack<T>
SortedList SortedList<T>

 单列泛型群集: List<Object> list=new List<Oibject>(卡塔尔国; 遍历 for(int i=0;i<list.Count;i++卡塔尔 {   Console.WriteLine(list[i]卡塔尔(قطر‎; } foreach(Object item in list卡塔尔(قطر‎ {   Console.WriteLine(item卡塔尔(英语:State of Qatar); } 双列泛型会集Dictionary<object,object> dic=new Dictionary<object,object>(卡塔尔(英语:State of Qatar); 遍历 foreach(KeyValuePair<object,object> item in dic卡塔尔国 { Console.WriteLine(dic.Key卡塔尔(قطر‎; Console.WriteLine(dic.Value卡塔尔国; } foreach(Object item in dic.Keys卡塔尔(قطر‎ {  Console.WriteLine(item卡塔尔国;   Console.WriteLine(dic[item].Value卡塔尔国; } foreach(Object item in dic.Values卡塔尔(قطر‎ {  Console.WriteLine(item卡塔尔(英语:State of Qatar); } 四.浓厚类的法子 1.构造函数 (1.)方法名与类名近似 (2.)未有回到值 (3.)主要成就指标起首化学工业作2.无参布局函数的 语法 访谈修饰符 类名(卡塔尔(英语:State of Qatar) {  //方法体 }  3.带参布局函数 语法 访谈修饰符 类名(参数列表卡塔尔(قطر‎ {  //方法体 }  隐式布局函数 系统活动给类分红叁个无参布局函数。 构造函数的重载 无参构造和带参布局可以作为是方式重载。 方法重载 (1.)方法名相同(2.)方法参数类型差异恐怕参数个数差别 (3.)在同一个类中 对象人机联作每种类都有友好的特性和功力,大家把它们封装为属性和情势。对象之间通过品质和办法开展人机联作。能够感到方法的参数及措施的重回值都以指标间互相传递消息。 个人精晓,他为啥叫对象间互为呢。因为是目的间展开的特性方法人机联作。而类之间开展的接二连三多态接口。  六.初识世袭和多态 世袭概述 1.什么是世袭 (1)移除类的冗余代码 (2)集成的概念 2.base至关心珍视要字和protected修饰符

public class Person
{
protected string ssn = "111-222-333-444" ;
protected string name = "张三" ;
public virtual void GetInfo() {
Console.WriteLine("姓名: {0}", name) ;
Console.WriteLine("编号: {0}", ssn) ;
}
}
class Employee: Person
{
public string id = "ABC567EFG23267" ;
public override void GetInfo() {
// 调用基类的GetInfo方法:
base.GetInfo();
Console.WriteLine("成员ID: {0}", id) ;
}
}

  

3.子类布局函数 (1)隐式调用父类构造函数 (2)展现调用父类布局函数  世襲的施用 世襲、封装和多态是面向对象编制程序的第黄金年代特征。
其成员被持续的类叫基类也称父类,世袭其成员的类叫派生类也称子类。
派生类隐式获得基类的除布局函数和析构函数以外的兼具成员。 派生类只可以有叁个直接基类,所以C#并不援助多种继承,但一个基类能够有三个一向派生类。
继承是能够传递的。
村办成员其实早已被三番两回了,可是它们却不可能被访谈,因为个人成员只可以被声称它们的类或构造体中才可访谈,所以看上去疑似没有被持续。**

 假如基类中是未有参数的构造函数

倘使基类中是还未有参数的布局函数,在派生类中能够自定义有参数的结构函数 如果基类定义了包括参数的构造函数,那么此布局函数必须被推行,且在派生类中得以完毕该结构函数,这个时候大家得以应用base关键字   比如派生类的基类也是派生类,则每种派生类只需担当其间接基类的组织,不肩负直接基类的结构,
而且其试行构造函数的顺序是从最下边包车型地铁基类最初的,直到最终二个派生类截至。
is a的应用 由于SE和PM都继承Employee,即SE is a Employee,PM is a Employee. 继续的价值: (1.)集成模拟了切实可行世界关系,oop中重申任何皆对象,那切合大家面向对象编程的考虑方式 (2.)继承实现了代码复用 (3.)集成使程序布局更清楚 多态 消除集成带给的主题材料 虚方法 利用virtual关键字修饰的方式,称为虚方法。虚方法有方法体 语法 访谈修饰符 virtual 重回类型 方法名()  {     //方法体  } 重写虚方法 做客修饰符 override 再次来到值类型 方法名(卡塔尔(英语:State of Qatar) { //方法体 } 怎么样是多态 多态按字面的情致就是“多种样子”,指同生机勃勃操作功效区别的对象时,能够有两样的分解,发生区别的结果。 贯彻多态 (1.)完毕格局重写 (2.)定义父类变量 七.尖锐驾驭多态

里氏替换原则

在多少个软件系统中,子类能够轮番父类现身的职位,而对软件的效果未有别的影响,就称为里氏替换原则。

子类能够扩张父类的成效,但不能够改动父类原有的职能。 子类能够兑现父类的望梅止渴方法,但无法遮住父类的非抽象方法。 子类中能够追加自身特有的主意。

当子类的方法重载父类的法未时,方法的内置条件(即方法的形参)要比父类方法的输入参数更加宽松。

当子类的方式达成父类的画饼充饥方法时,方法的前置条件(即方法的重回值)要比父类更严俊。

看上去十分不敢相信 无法相信,因为大家会意识在团结编制程序中平常会违反里氏替换原则,程序照旧跑的地道的。所以我们都会时有发生那样的难题,假如自身非要不服从里氏替换原则会有何结果?

结果就是:你写的代码出题目标可能率将会大大扩张。

例如: Father son=new Son();

C#中有八个荦荦大者字能够提现里氏替换原则:is和as操作符 is操作符用于检核查象和点名的花色是或不是合营。 as操作符主要用以两个目的之间的类型调换。

父类类型做参数

演示: 先给多少个类: 1.父类,交通工具类。有一批属性。 2.小车类,世袭父类。 3.大巴类,世袭父类。 4.工作者类。职员和工人乘坐七通八达工具回家!工作者回家的办法,参数是父类对象!

然后建多个职工的集合,初阶化工作者. 扔到集合里。就和=能够用集合的项点出工作者回家的点子传三个子类! 计算那便是子类指向父类!也便是所谓的里氏替换原则!

抽象类和浮泛方法

如若二个类不与实际的东西相关联,而只是表达风姿浪漫种浮泛的概念,仅仅是当作其派生类的三个基类,那样的类便是抽象类,在抽象类中注解方法时,假设加上abstract时正是空洞方法

抽象类与非抽象类的首要差别:

·抽象类不能够直接被实例化

·抽象类中得以蕴含抽象成员,但非抽象类中无法

·抽象类不可能是密封的要么静态的

虚幻方法是多个尚无落实的不二秘诀,通过在定义方法时增添入眼字abstract能够申明抽象方法。

空洞方法文法

采访修饰符 abstract 再次回到值类型 方法名();

留心:抽象方法未有关掉的大括号,而是一直跟了个“;”也正是说,它并未有饱含方法执行逻辑的方法体!

抽象类的概念

语法: 访问修饰符 abstract class 类名{}

潜心: 抽象类提供的悬空方法,这几个点子只有定义,怎样兑现都由抽象类的非抽象子类完毕。

抽象类和虚幻方法的接纳

何以贯彻叁个虚无父类派生的子类 当从多个架空父类派生叁个浮泛子类时,子类将一连父类的富有特征,富含它未完毕的画饼充饥方法。抽象方法必得在子类中落到实处,除非她的子类也是抽象类。

抽象类和虚幻方法的接收

怎么落实四个虚无父类派生的子类 当从叁个架空父类派生叁个浮泛子类时,子类将连续父类的保有特征,包罗它未贯彻的思梅止渴方法。抽象方法必得在子类中得以达成,除非他的子类也是抽象类。

面前遇到对象的三大特征

包装:保障对象自己数据的完整性和安全性

三番若干遍:建构类之间的关系上,实今世码复用,方便系统的恢宏。

多态:相通的法子调用可完毕区别的落到实处际意况势。

八.可扩张标志性语言XML

意气风发、XML是何许?功效是何许?

l  XML ( eXtensible Markup Language 卡塔尔(قطر‎语言是风华正茂种可扩张的标记语言。在那之中的可增添是相持HTML来说的。因为XML标签没有被预订义,需求客户自行定义标签。

l  XML 被规划的宏旨是:是意味数据,而非呈现数据。

操作XML的方法

解析XMl文件

public static void Main(string[] args)

{  

    XmlDocument doc=new XmlDocument():

    doc.Load("Engineer.xml");

     XmlNode root=new XmlNode();

      foreach(XmlNode item in doc.ChildNodes)

      {

           switch(node.Name)

            {

                case "id":

                  Console.WriteLine(node.InnerText);

                   break;

            }

      }

}

 用TreeView呈现数据

XmlDocument doc = new XmlDocument();
            doc.Load("北京电视台.xml");
            XmlNode root = doc.DocumentElement;
            //找根节点  
            foreach (XmlNode item in root.ChildNodes)//遍历子节点
            {
                if(item.Name.Equals("tvProgramTable"))//判断条件是节点的Name是否是"tvProgramTable"
                {
                    foreach (XmlNode items in item.ChildNodes)//遍历子节点的子节点
                    {
                        TvProgram Tp = new TvProgram();
                        Tp.PlayTime = Convert.ToDateTime(items["playTime"].InnerText);
                        Tp.Meridien = items["meridien"].InnerText;
                        Tp.Path = items["path"].InnerText;
                        Tp.ProgramName = items["programName"].InnerText;
                        ProgramList1.Add(Tp);//绑定到集合
                    }
                }

            }
TreeNode minenode = new TreeNode();
            minenode.Text = "我的电视台";

            //bind
            tvList.Nodes.Add(minenode);

            //根节点
            TreeNode root = new TreeNode();
            root.Text = "所有电视台";
            //bind
            tvList.Nodes.Add(root);

            ChannelManager manager = new ChannelManager();
            manager.ResolveChannels();
            List<ChannelBase> list = manager.List;
            foreach (ChannelBase item in list)
            {
                TreeNode tn = new TreeNode();
                tn.Text = item.ChannelName;
                tn.Tag = item;
                root.Nodes.Add(tn);

            }

  九.文书操作

怎样读写文件

引入using.System.IO;

string path=txtFilePath.Text;

string content=txtContent.Text;

if(path.Equals(null)||path.Equals(""))

{

 MessageBox.Show("文件的门路不为空"卡塔尔国;

return;

}

try

{

FileStream nyfs=new FileStream(path,FileMode.Create)

streamWriter mysw=new StreamWriter(myfs);

mysw.Write(content);

mysw.Close();

myfs.Close();

MessageBox.Show("写入成功"卡塔尔(英语:State of Qatar);

}

catch(Exception ex)

{

MessageBox.Show(ex.Message);

}

文件流

语法

FileStream 文件流对象=new FileStream(string filePath,FileMode fileMode卡塔尔(英语:State of Qatar);

文件读写器

StreamWriter 写入器

StreamWriter mysw=new StreamWriter();

缓和乱码难点

FileStream myfs=new FileStream(path,FileMode.Open)

StreamReader mySr=new StreamReader(myfs,Encoding.Default);

content=mySr.ReadToEnd();

txtContent.Text=content;

文件和目录操作

File类和Directory类

File类常用的主意

Exites(string path卡塔尔国 用于检查钦命文件是或不是留存

copy(卡塔尔(英语:State of Qatar)复制文件

Move(卡塔尔移动文件

Delete(卡塔尔国删除文件

示例 迷你能源微电脑

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Chap09_资源管理器
{
    class MyFile
    {
        public string FileName { get; set; }
        public long FileLength { get; set; }
        public string FileType { get; set; }
        public string FilePath { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;

namespace Chap09_资源管理器
{
    public partial class FrmMain : Form

    {
        public FrmMain()
        {
            InitializeComponent();
        }

        private void FrmMain_Load(object sender, EventArgs e)
        {
            DriveInfo[] di = DriveInfo.GetDrives();
            foreach (DriveInfo item in di)
            {
                TreeNode tn = new TreeNode(item.Name);
                tn.Tag = item.Name;
                tvList.Nodes.Add(tn);

            }


        }
        public void BindInfo(TreeNode node)
        {
            try
            {
                lvList.Items.Clear();
                DirectoryInfo dir = new DirectoryInfo(node.Tag.ToString());
                DirectoryInfo[] dirs = dir.GetDirectories();
                foreach (DirectoryInfo item in dirs)
                {
                    TreeNode tn = new TreeNode();
                    tn.Text = item.Name;
                    tn.Tag = item.FullName;
                    node.Nodes.Add(tn);
                }
                FileInfo[] fi = dir.GetFiles();
                List<MyFile> files = new List<MyFile>();
                foreach (FileInfo item in fi)
                {
                    MyFile mf = new MyFile();
                    mf.FileName = item.Name;
                    mf.FileLength = item.Length;
                    mf.FileType = item.Extension;
                    mf.FilePath = item.FullName;
                    files.Add(mf);
                }
                foreach (MyFile item in files)
                {
                    ListViewItem items = new ListViewItem(item.FileName);
                    items.SubItems.Add(item.FileLength.ToString());
                    items.SubItems.Add(item.FileType);
                    items.SubItems.Add(item.FilePath);
                    lvList.Items.Add(items);
                }

            }
            catch (Exception ex)
            {

                MessageBox.Show(""+ex.Message);
            }

        }

        private void tvList_AfterSelect(object sender, TreeViewEventArgs e)
        {

            TreeNode node = this.tvList.SelectedNode;
            this.BindInfo(node);

        }

        private void lvList_DoubleClick(object sender, EventArgs e)
        {
            Process.Start(lvList.SelectedItems[0].SubItems[3].Text);
        }

        private void 复制ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            DialogResult result = fbd.ShowDialog();
            string sourcePath = lvList.SelectedItems[0].SubItems[3].Text;
            string desPath = null;
            if(result==DialogResult.OK)
            {
                desPath = fbd.SelectedPath;
                desPath += "\" + lvList.SelectedItems[0].SubItems[0].Text;
                File.Copy(sourcePath,desPath);
                MessageBox.Show("复制成功");
            }

        }

        private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            lvList.Items.Clear();
           string deletePath=lvList.SelectedItems[0].SubItems[3].Text;
            File.Delete(deletePath);
            MessageBox.Show("删除成功");
        }
    }
}

  美高梅163888 3美高梅163888 4

 

最早后就是如此能够读出本身硬盘上的东西!

好了就写到那了。总计到那边了。

前言: 学习C#编程应该有多少个月了,作为二个生手,未有资格来斟酌怎么。唯有对友好所学举办一个计算,...

          之意形步法

假 如 你 的 人 生 有 理 想,那 么 就 一 定 要 去 追,不 管 你 现 在 的 理 想 在 别 人 看 来是 多 么 的 可 笑 , 你 也 不 用 在 乎 , 人 生 蹉 跎 几 十 年 , 如 果 年 轻 的 时 候 计 较 得 失 前 怕 狼 就 后 怕 虎 而 不 去 追 逐, 等 到 了 40, 50 岁 的 时 候 , 你 唯 一 能 做 的 就 是 感 叹 岁 月 的 消 逝 和 无 情…

 

船只停靠在港湾是很安全的,但那不是造船的指标

          --交深黑鸟五道口校区原玉明先生编制

                             By:浙鲜青鸟五道口原玉明老师

1.读书情势: 3

第一章 深入.NET框架 5

1.NET简便说明 5

2.Microsoft .NET框架概述。 7

  1. NET框架连串结构 9

4.封装体现   李明瑞 14

5..那一个年我们学过的拜访修饰符?? 14

6.变量,类和措施的命名法 15

7.new:代表意义: 15

8.字段和质量区别? 15

9.自动属性 15

10.vs二零一一下写的花色怎么着在vs20第10中学开垦 16

11.学业环节 16

第二章 深入C#数据类型 16

CLR via C# 16

  1. 封装 16

  2. 有关数组的那些事情 17

  3. 值类型(在栈上存款和储蓄真实的值)和援引类型(堆和栈上都要分配空间卡塔尔 17

  4. 结构体 22

5.布局函数 23

6.装箱和拆箱 24

  1. 值传递和引用传递 25

8.卓越演练  总监评分 26

其三章 使用集结组织相关数据(终极内部存款和储蓄器数据容器) 28

黄金时代、集结概念引入 30

二、 第三个集结ArrayList的运用 31

★1.引子: 31

★2.聚集扩大体量原理截图 32

三、集结凉月素操作(增添,遍历,删除、无动于衷错误) 34

1.家常便饭属性: 34

2.常用艺术: 34

  1. 大规模错误:见PPT 34

4.现场编制程序 35

四、会集伊始化器,对象初阶化器 36

五、HashTable 36

★1.HashTable注意事项 37

★2.对HashTable遍历三种方案: 37

六、泛型集结List<T>(驾驭difficult,写起来easy) 40

七、泛型集合Dictionary<K,V> 40

八、 自定义泛型 40

九、.NET集合框架(集合扩充) 41

Queue(队列): 42

Stack(栈): 42

第四章 深刻类的主意 44

1.构造函数 44

2.办法重载(考试必考:2到3分) 45

  1. 对象间的相互影响 45

第六章 继承 51

生龙活虎、课程回顾 51

二、预习难题 52

三、本章指标 52

四、课程内容 53

3.继承: 53

第七章 深刻掌握多态 60

首先种:虚方法实现多态 63

其次种:抽象方法完结多态 65

第八章 网络电视Smart   // 获取和装置当前目录(该进度从当中运行的目录)的一点一滴节制目录。  System.Environment.CurrentDirectory 69

01.什么是设计形式 72

02.简约工厂图解 73

03.单例格局 75

04.为什么学习XML? 77

 05.什么是XML? 77

06.xml书写注意点 78

07.解析xml文件 78

08.难点记录 78

09.TreeView控件 78

10.互连网电视Smart 79

第九歌 文件操作 89

01.文书操作相关 92

02.File和Directory 93

03.FileInfo和 DirectoryInfo 93

04.系列化与反系列化 94

第十章 影院领票系统 96

  1. 从Movie开始 97

  2. Seat 座位类 100

3热播场次 100

 

 

 

 

 

 

 

郑重声明:本文版权归美高梅163888所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。