那些年【深入.NET平台和C#编程】
分类:计算机编程

一、深入.NET框架

ArrayList (非泛型集合  using System.Collections;)

public void Text1(){

ArrayList al = new ArrayList ();

al.Add ("刘德化");       //添加元素

al.Add ("张学友");

//遍历方式1

for (int i = 0; i < al.Count; i ) {

Console.WriteLine (al[i]);

}

//遍历方式2

foreach (var item in al) {

Console.WriteLine (item);

}}

/* HashTable*/(非泛型集合)

//Key---value

//这里面Key是唯一的

Hashtable ht=new Hashtable();

ht.Add (001, "AAA");

ht.Add (002, "BBB");

ht.Add (003, "CCC");

//通过Key取value

Console.WriteLine (ht[001]);

//通过一个Key移除一个值

ht.Remove(001);

Console.WriteLine (ht[001]);

//全部清除

ht.Clear();

Console.WriteLine (ht[003]);

1..NET框架具有两个组件:CLR(公共语言运行时)和FCL(框架类库),CLR是.NET框架的基础

//stack:(非泛型集合)

2.框架核心类库:

                        先进后出的管理模式

//stack:都属于不安全的集合,(他可以存储多种数据类型)

//装箱和拆箱

//装就是把普通类型转换为object对象类型

//拆就是把装好的object拆成装箱之前的真实类型(强制转换)

//占用内存,消耗内存过大

Stack sk = new Stack ();

//向栈中添加元素

sk.Push (1);

sk.Push ("你好0");

sk.Push ("你好1");

sk.Push ("你好2");

Console.WriteLine (sk.Count);

返回栈顶元素并移除

string s=(string)sk.Pop();

Console.WriteLine (s);

返回栈顶元素不移除

string s1=(string)sk.Peek();

Console.WriteLine (s1);

Console.WriteLine ("-------");

判断莫个元素是否在栈中

bool isHas=sk.Contains(1);

if (isHas) {

Console.WriteLine ("Ture");

}

从Stack中移除所有对象

                             Console.WriteLine (a);

//遍历

foreach (var item in sk) {

Console.WriteLine (item);

}

System.Collections.Generic:泛型操作

//队列(queue)(非泛型集合)

Queue q = new Queue ();

//Queue<int> qu=new Queue<int>

//添加元素到队列尾部

q.Enqueue (1);

q.Enqueue (2);

q.Enqueue (3);

//返回队列最前的元素,并删除

object obj=q.Dequeue();

Console.WriteLine (obj);

返回队列最前元素,不删除

q.Peek();

foreach (object item in q)

{

Console.WriteLine (item);

}

System.IO:IO流操作

泛型集合(using System.Collections.Generic;)

 * 集合:ArrayList(非泛型集合)

 * ArrayList 是一个数组集合

 * List<T>

 * 它属于动态改变长度的数组集合,不需要我们管

 * 

public void Text5()

{

List<int> al1 = new List<int> ();

Stopwatch sw = new Stopwatch ();//时间(using System.Diagnostics;)

sw.Start ();

for (int i = 0; i < 10000; i ) {

al1.Add (i);

}

sw.Stop ();

// Console.WriteLine ("时间是:{0}",sw.Elapsed);

Console.WriteLine ("22");

}

//练习1:设计一个学生系统,可以录入学生相关信息,并且能通过学号反向输出学生的全部信息

//练习2;根据上题,增加可以增加或删除学生功能

public void Text9()

{

//录入

List<Student> l = new List<Student> ();

bool d=true;

while(d){

Console.WriteLine ("请输入数子选则你想要的操作 1-录入 2-输入学号查看 3删除");

int f = int.Parse (Console.ReadLine ());

if(f==1){

Console.WriteLine ("请输入你要录入的学生学号,姓名,性别");

int a = int.Parse (Console.ReadLine ());

string b = Console.ReadLine ();

string c = Console.ReadLine ();

l.Add (new Student (a, b, c));

foreach (Student item in l) {

Console.WriteLine ("学号为:{0} 姓名为:{1} 性别为:{2} ", item.id, item.name, item.age);

}

}

if (f == 2) {

Console.WriteLine ("请输入学号查看该学生信息");

int g = int.Parse (Console.ReadLine ());

foreach (Student item in l) { 

Console.WriteLine ("学号为:{0} 姓名为:{1} 性别为:{2} ", g, item.name, item.age);

}

}

if (f == 3) {

Console.WriteLine ("请输入学号删除该学生信息");

int v = int.Parse (Console.ReadLine ());

for (int j = 0; j < l.Count; j ) { 

//Console.WriteLine ("学号为:{0} 姓名为:{1} 性别为:{2} ", l [j].id, l [j].name, l [j].age);

if (l [j].id == v) { 

l.Remove (l [j]); 

//Console.WriteLine ("删除成功!");

}

Console.WriteLine ("剩余学生:");

Console.WriteLine ("学号为:{0} 姓名为:{1} 性别为:{2} ", l [j].id, l [j].name, l [j].age);

}

}

}

}

class Student

{

public int id;

public string name;

public string age;

public Student(int id,string name,string age)

{

this.id=id;

this.name=name;

this.age=age;

}

}

System.Net:网络编程

System.Data:ADO.NET结构的类的访问

System.Windows.Forms:窗体操作

System.Drawing:图形操作

二、深入C#数据类型

1.结构体:结构体是由struct修饰的类,结构体是值类型(枚举也是值类型)

public struct Student
{
}

2.拆箱和装箱:

装箱:就是把值类型转换为引用类型

object o=1;

拆箱:就是把引用类型转换为值类型

int num=(int)o;

3.值传递和引用传递(有无ref修饰)

a.有ref修饰时,修改的值会永久保留

b.无ref修饰时,是值类型的,修改的值不会永久保留

c.无ref修饰时,是引用类型的,修改的值会永久保留

三、泛型集合

1.集合的概念:

集合就是将一堆数据类型的数据放在一起的一种容器,和数组是很相似的东西。

2.集合的分类以及声明方法

a.集合分为非泛型和泛型集合,非泛型又分单列(ArrayList)和双列(Hashtable),泛型也分单列(List<T>)和双列(Dictionary<K,V>)。

单列的T数据类型可以为object类型,双列的K,V也可以是object类型

b.集合的声明

ArrayList list=new ArrayList();

Hashtable list=new Hashtable();

List<T> list=new List<T>();

Dictionary<K,V> list=new Dictionary<K,V>();

3.集合的方法和属性

1.Add(),增加数据的方法

2.Remove(),删除数据的方法,()里填的是一整条的数据,单列集合的删除,集合会去自动维护数据,这样集合不会出现某个索引的值是为空的

3.RemoveAt(),同样也是删除数据的方法,()里填的是索引(单列)双列没有RemoveAt()方法,

4.Clear(),清空集合的所有数据

5.Count属性,可以得到集合有几条数据

6.Capacity属性,集合的容量,集合的容量是成倍(二倍)的增加的,Count为0时,Capacity为0,Count为1时,Capacity为4

7.Contains(),单列集合用来判断某个数据是否存在

8.ContainsKey(),双列判断是否存在某个Key值

9.ContainsValue(),双列判断是否存在某个Value值

4.集合的遍历方法

HashTable和Dictionary遍历不同就是,遍历值类型的时候,HashTable需要进行类型转换(拆箱,装箱)

HashTable:

(1).通过Key值遍历 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }

(2).通过value值遍历 foreach (Student item in list.Values) { Console.WriteLine((Student)item.Name); }

(3).通过整体的双列集合遍历 foreach (DictionaryEntry item in list) { Console.WriteLine(item.Key); Console.WriteLine(((Student)item.Value).Name); }

Dictionary:

(1).通过Key值遍历 foreach (string item in list.Keys) { Console.WriteLine(list[item]); }

(2).通过value值遍历 foreach (Student item in list.Values) { Console.WriteLine(item.Name); }

(3).通过整体遍历 foreach (KeyValuePair<T,V> item in list) { Console.WriteLine(item.Key); Console.WriteLine((item.Value).Name); }

四、深入类的方法

1.方法重载:通过传的参数的不同从而调用不同的方法,方法名相同,参数类型不同,参数顺序不同,参数个数不同,和返回值无关

参数类型不同:

public void Play(int num){};

public void Play(string name){};

参数顺序不同:

public void Play(int num,int age){};

public void Play(int age,int num){};

参数个数不同:

public void Play(int num){};

public void Play(string name,int num){};

和返回值无关:

public string Play(int num){};

public int Play(int num){};

2.类的构造:和类名相同,无返回值

无参构造:

public class Student

{

  public Student(){};

}

带参构造:有带参构造,必须写出类的无参构造

public class Student

{

  public string Name { get; set; }

  public Student(){};

  public Student(string name){this.Name=name};

}

3.对象间的交互

一个电视类:

public class Tv

{

  public void Play(){};

}

一个电视工具类

public class TvTool

{

  public void Play()

  {

    Tv t=new Tv();

    t.Play();

  }; 

}

主程序中:

TvTool tool=new TvTool();

tool.Play();

从而只有控制一个类去控制别的类

五、继承和多态

1.继承:子类继承父类,子类便可以使用父类的属性和方法,继承用“:”(冒号)实现继承

父类:

public class Man

{

  int age;

  string name;

  public void Say()

  {

  };

}

子类:

public class Student:Man

{

  public void Play()

  {

    方法里便可以使用父类的属性和方法

    age=1;

    name="张三";

    Say();

  };

}

2.虚方法实现多态:通过子类重新父类的方法,实现多态,从而一个方法实现不同效果

父类:

public class Man

{

  public virtual void Say()

  {

  }

}

子类:

public class Student:Man

{

  public override void Play()

  {

    我是一个学生

  }

}

public class Super:Man

{

  public override void Play()

  {

    我是一个超人

  }

}

六、深入多态

1.里氏原则:父类实力化子类不会影响程序

2. is 和  as

is操作符用于检查对象和指定的类型

as操作符用于两个对象之间的类型转换

3.抽象类实现多态

父类:

public abstract class Man

{

  public abstract void Say()

  {

  }

   public void Play(){}

  抽象类可以有普通方法

}

子类:

public class Student:Man

{

  public override void Play()

  {

    我是一个学生

  }

}

public class Super:Man

{

  public override void Play()

  {

    我是一个超人

  }

}

七、Xml操作

1.Xml解析

XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode root = doc.DocumentElement;

foreach (XmlNode item in root.ChildNodes)
{  

switch (item.Name)
{
case "Name":
movieName = item.InnerText;
m.MovieName = movieName;
break;
case "Poster":
playBill = item.InnerText;
m.Poster = playBill;
break;

}

可以将Xml数据放在集合中

也可以通过索引器进行解析到Xml数据

2.关于XmlNode对象的属性

InnerText:当前节点的值

Name:当前节点的名称

ChildNodes:当前节点的所有子节点

3.treeView绑定节点

TreeNode tn = new TreeNode(item);
tn.Tag = Schedule.Items[item].Movie;
Treeview.Nodes.Add(tn);

八、文件操作

1.读写文件

写:

FileStream fs=new FileStream(path,FileMode.Create);

StreamWriter sw=new StreamWriter(fs);

sw.Writer(需要些的文本);

sw.Close();     后开的先关流

fs.Close();

读:

FileStream fs=new FileStream(path,FileMode.Open);

StreamWriter sw=new StreamWriter(fs,Ending.Default);

String txt=sw.ReadToEnd();

sw.Close();     

fs.Close();

2.相关属性

Exists:潘判断是否存在

Extension:后缀名

Naem:文件名

FullName:文件地址

 

本文由pc28.am发布于计算机编程,转载请注明出处:那些年【深入.NET平台和C#编程】

上一篇:图形缩放的连带管理,极大图片的显示 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 那些年【深入.NET平台和C#编程】
    那些年【深入.NET平台和C#编程】
    一、深入.NET框架 ArrayList (非泛型集合  using System.Collections;) public void Text1(){ ArrayList al = new ArrayList (); al.Add ("刘德化");       //添加元素 al.Add ("张学友
  • 碰着搭建
    碰着搭建
    Appium是移动端的自动化测试工具,类似于前面所说的Selenium,利用它可以驱动Android、iOS等设备完成自动化测试,比如模拟点击、滑动、输入等操作,其官方
  • Django中的CBV和FBV示例介绍
    Django中的CBV和FBV示例介绍
    Django中的CBV和FBV Django中的CBV和FBV示例介绍,djangocbvfbv示例 前言 本文主要给大家介绍了关于Django中CBV和FBV的相关内容,分享出来供大家参考学习,下面话不
  • 将Log4net的配置配置到的独立文件中,Log4Net日志插
    将Log4net的配置配置到的独立文件中,Log4Net日志插
  • Python面向对象编程思想
    Python面向对象编程思想
    Python中的类(一) 1.面向过程编程:计算机通过一系列指令来一步一步完成任务。 面向对象编程——Object OrientedProgramming,简称OOP,是一种程序设计思想。