来自 威尼斯国际官方网站 2019-10-18 23:14 的文章
当前位置: 威尼斯国际官方网站 > 威尼斯国际官方网站 > 正文

威尼斯国际官方网站个人总结深入,在那个桃花

深入.NET平台和C#编程

个人总计深切.NET平台和C#编程,

  前言:学习C#编制程序应该有多少个月了,作为一个新手,未有资格来评价如何。独有对和煦所学实行一个总计,也许有不严厉的地方,万望谅解。

         一·深入.NET框架

      .NET框架(.NET Framework),他是开拓.NET应用程序的中坚基础。

.NET框架的系统布局

  支持C#、VB、.NET、c++、等语言的开支,也便是大家所说的跨语言开采。

.NET框架具备多少个第一组件:CLEnclave和FCL。(CL奥迪Q3是Common Language Runtime即公共语言实行时;FCL是Framework Class Library即框架类库)

.NET框架宗旨类库及其作用

威尼斯国际官方网站 1

 

类和对象

类定义了一组概念模型,而指标是潜心贯注的实业。

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

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

封装

 1.保障数据的安全性。

2.提供明晰的对外接口

3.类内部可以私下修改,不影响其余类。

类图

威尼斯国际官方网站 2

 

二.深入C#数据类型

值类型应用项目

值类型包罗大旨数据类型,和枚举类型,结构体等。

引用类型满含string 数组,类和接口。

结构体:

能够有字段,能够有方法。

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

无须new。注脚结构对象后必得给组织成员赋初值。

拆箱和装箱

示例:

int a=1;

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);
在哈希表中去除有个别key/value键值对:HashtableObject.Remove(key);
从哈希表中移除全体因素:                HashtableObject.Clear(); 
认清哈希表是还是不是带有特定键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); } 双列泛型集结Dictionary<object,object> dic=new Dictionary<object,object>(); 遍历 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); } 四.深入类的措施 1.构造函数 (1.)方法名与类名一样 (2.)未有再次来到值 (3.)首要完毕指标初阶化专业2.无参构造函数的 语法 访谈修饰符 类名() {  //方法体 }  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 再次回到值类型 方法名() { //方法体 } 什么是多态 多态按字面的意思便是“多样形状”,指同一操作作用不一的靶未时,能够有例外的解释,产生分歧的结果。 落成多态 (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 马克up 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("写入成功");

}

catch(Exception ex)

{

MessageBox.Show(ex.Message);

}

文件流

语法

FileStream 文件流对象=new FileStream(string filePath,FileMode fileMode);

文件读写器

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()复制文件

Move()移动文件

Delete()删除文件

示例 Mini能源管理器

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("删除成功");
        }
    }
}

  威尼斯国际官方网站 3威尼斯国际官方网站 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二零一三下写的品种怎么在vs200第88中学开采 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

 

 

 

 

 

 

 

本文由威尼斯国际官方网站发布于威尼斯国际官方网站,转载请注明出处:威尼斯国际官方网站个人总结深入,在那个桃花

关键词: