`
寂寞游侠
  • 浏览: 2952 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

深入.Net框架

 
阅读更多
1.C#工具安装 .NET Framework 4.0 出现错误解决方法
(1)运行cmd
(2)输入net stop WuAuServ
(3)将X:\Windows\SoftwareDistribution\这个文件夹重命名为SDold       注释 : X 是系统盘
(4)运行cmd,并输入net start WuAuServ
(5)以管理员身份运行.NET Framework 4.0的安装程序

第一章
(1).Ping地址是否畅通
using System.Net.NetworkInformation //引用此命名空间
Ping pingsender = new Ping(); //New此对象
PingReply reply = pingsender.Send(this.txtIP.Text.ToString()); //根据填写的ip地址 , 去测试是否畅通,返回一个状态
if (reply.Status == IPStatus.Success) //如果状态等于畅通 ,接下来你懂得


(2)网络上下载图片(要求有网络)
using System.Net;
using System.IO; //引用命名空间
            string address = " http://titanimg.titan24.com/game/20110808/10ae4ffd5a81d639ed5518acda8a7862.jpg"; //图片网站地址
            string pictureaddress = "10ae4ffd5a81d639ed5518acda8a7862.jpg";//图片文件名
            try
            {
                WebClient web = new WebClient(); //创建此对象
                if (!File.Exists(pictureaddress))  //如果已经下载此图片 就不会再下载了
                {
                    web.DownloadFile(address, pictureaddress); //对象的下载方法,
                }
                this.picTu.Image = Image.FromFile(pictureaddress); //把图片路径给当前的图片控件

(3)窗体上显示网页
URL.StartsWith("http://") && URL.StartsWith("https://")  首先判断输入的地址是否包含http
web.Navigate(URL);//设置控件的地址

第二章
(1) struct结构

public struct st
{
   //结构体    结构中可以有字段也可以有方法。 字段不能赋初始值
}

public Main () //另一个方法中使用它
{
     st s; 创建它 无须用New
}

(2)params  当不知道具体要几个参数时
public static int AddNumber(params int[] arr)
{
    return arr;
}
//另一个方法调用上面方法时
{
  AddNumber(1,3,2);    //可以传任何个数的参数
  AddNumber(1,2); tnn
}



 
第三章 (5种集合的增删查 使用方法) using System.Collections

(1)集合
       public static ArrayList list = new ArrayList(); // 声明
       list.Capacity 属性 指list存贮空间大小 动态的 超出就翻倍扩展
       list.Tro,TpSoze(); 去掉多余空间
       list.add(object); //添加一个对象
       list.RemoveAt(int) //移除指定下标的对象
       object o =(object)list[0]; //获取指定下标的对象,然后你懂得
       foreach (object c in list) { }//获取集合里的全部值

(2)哈希集合(可以通过键来查询指定元素)
       public static Hashtable li = new Hashtable(); //声明
       li.add(键类型变量,object); //键代表这个对象的唯一列 能区分每个对象的,可以是任何数据类型
       li.Remove(键类型变量);  //通过键来删除指定的对象
       object c = li[键类型变量]; //通过键 来获取指定对象
       foreach (object o in li.Keys) {} //获取集合里的全部键
       foreach (object o in li.values){} //获取集合李的全部值
       li.Contains(键类型变量) //判断是否包含这个键的对象

(3)泛型集合,数据更稳定安全
       public static List<T> list1 = new List<T>(); //声明 T代表任意数据类型
       list1.Add(T类型变量); //添加只能添加这个数据类型的变量 ,添加其他的会直接报错
       list1.RemoveAt(indenx); //移除指定下标的对象
       list1.Remove(T类型变量);   //移除只能移除这个数据类型的变量 ,移除其他的会直接报错
       T类型 b = list1[0]; //获取指定下标对象,不需要转换了,T同上
       foreach(T类型 d in list1){ } //获取集合里的每个对象, T同上

(4)泛型哈希集合(可以通过键来查询指定元素) 数据更安全
       public static Dictionary<K, V> li2 = new Dictionary<K, V>();  //声明   K代表集合中Key(键)数据类型,V代表Value(值)的数据类型  同(2)
       li2.Add(K类型变量,V类型变量); //添加 必须以K类型的变量和V类型的变量来添加
       li2.Remove(K类型变量); //删除 必须以K类型的变量来删除指定对象!
       V类型 p = li2[K变量]; // 根据Key键 获取指定的对象
       foreach (V类型 v in li2.Keys) { } //获取集合里的全部键
       foreach (V类型 v in li2.Values) { }//获取集合李的全部值

(5)泛型类
      public class MyStruct<T>
      { public T number}
      
      MyStruct<int> my = new MyStruct<int>();

(6)二维 三维数组
       int[,] arr1 = new int[2,3]{{1,2,3},
                                  {4,5,6}};  对等2维数组
       int[][] arr2 = new int[2][];
      
//交错二维数组
      int[][] arr2 = new int[2][];
            arr2[0] = new int[] { 1, 2, 3 };
            arr2[1] = new int[] { 4, 5 };
                                 //小于数组行数
            for (int i = 0; i < arr2.GetLength(0); i++)
            {                       //小于每行的长度(个数)
                for (int j = 0; j < arr2[i].Length; j++)
                {
                    Console.Write("\t{0}",arr2[i][j]);
                }
                Console.WriteLine();
            }

(6) 随机数种子
    Random rd = new Random(DateTime.Now.Millisecond* DateTime.Now.Second); //随机种子
    rd.Next(1000, 10000);
      
      
第4章
(1) 构造函数,  //注: 就是实例化对象就默认赋的初始值
    public 类名()
   {
      赋值。。。
   }

   
(2) 方法重载, 就是在一个类中写名称相同的方法 但是参数列表必须不同 如:

    public void show(int num1,int num2){}
    public void show(string num1,string num2){}

第6章
(1) 继承
   class Violin : Instrument  前面是子类 后面继承父类 继承后拥有父类的属性方法

(2)构造函数继承
   //父类   public Employee(int Age,Gender Sex,string ID,string Name, List<Job> WorkList)
           {
            this.Age = Age;
            this.Sex = Sex;
            this.ID = ID;
            this.Name = Name;
            this.WorkList = WorkList;
            }
   //子类   public PM(int Age,Gender Sex,string ID,string Name, List<Job> WorkList,int Year)
            :base(Age,Sex,ID,Name,WorkList)
            {
            this.YearOfExperience = Year;
            }
        不需要再一一赋值 可以直接传递值,子类自己的字段需要赋值
     base --- 父类对象

(3)修饰符
     修饰符      类内部  子类  其他类
     public      YES      YES    YES
     protected   YES      YES    NO
     private     YES      NO     NO
     internal 只能被当前程序集中的成员访问 不能被其他程序集的成员访问
     protected  internal (保护的与程序集的:可以被当前的累或者他的子类访问,也可以被当前的程序集中的成员访问,而不能被其他程序集中无关的类访问)

(4)继承的传递性
    class a
    class b:a
    class c:b
    c同样具有a的东西

(5)override  ,  virtual 虚方法

第7章

abstract  抽象方法

抽象方法必须包含在抽象类里面

sealed 密封方法 或者密封类 

sealed public overrude void Save()  加上关键字sealed  他就是最终方法 不能被子类所重写


(1) 接口的定义

public interface IFly
{
      void Fly();
}

接口中只能包含
1.抽象的属性
2.抽象的方法
3.抽象的索引器
4.抽象的事件

接口中不能包括字段和常量

(2)反射
using System.Reflection; 引用这个
string className = "Demo8_2." + factoryType + "Factory";
//Load方法表示要加载的程序集
//CreateInstance方法表示要在那个程序集上去创建的命名空间中的某个类对象。
   facotry = (AnimalFactory)Assembly.Load("Demo8_2").CreateInstance(className);




(3)添加节点
tvStudent.Nodes.Clear();
    foreach (Student b in Student.analyze())
   {
    reeNode tn = new TreeNode(b.StudentName);
    n.Nodes.Add(b.Age.ToString());
    tn.Nodes.Add(b.Hobby);
    his.tvStudent.Nodes.Add(tn);
    }

第11章  文件操作 using System.IO;
1.(写入文件内容)
            //创建文件流
            FileStream fs = new FileStream(this.textBox1.Text, FileMode.Create);
            //创建写入器
            StreamWriter sw = new StreamWriter(fs);
            //将录入的内容写入文件
            sw.Write(this.textBox2.Text);
            //关闭写入器
            sw.Close();
            //关闭文件流
            fs.Close();                                                             //FileStream 的第1个参数是文件的路径,第二个是打开文件的类型(枚举型)
                                                                                    //StreamWriter和StreamReader第1个参数是文件流对象,
                                                                                    //Encoding是编码对象,他的枚举是编码类型。解决乱码问题 如:
                                                                                      UTF8(系统默认) ASCII GB2312 ANSI
2.(读取文件内容)
            //创建文件流
            FileStream fs = new FileStream(this.textBox1.Text, FileMode.Open);  加属性, FileA
Ccess.Read ??  FileShare.None //对文件的占用性
            //创建读取器
            StreamReader sr = new StreamReader(fs, Encoding.Default);

            //将读取的内容写入程序
            this.textBox2.Text = sr.ReadToEnd();
            //关闭读取器
            sr.Close();
            //关闭文件流
            fs.Close();

3.(目录[文件夹]和文件操作)
                DirectoryInfo di = new DirectoryInfo("D:\\"); //获取这个文件夹  参数是文件夹路径  
                FileInfo[] fi = di.GetFiles();  //获取这个文件夹下的所有文件
                DirectoryInfo[] dire = di.GetDirectories(); //获取这个文件夹下的所有文件夹

                foreach (FileInfo f in fi)
                {
                    MyFile mf = new MyFile();
                    mf.FileName = f.Name; //文件名
                    mf.FileLength = float.Parse(Math.Round((double)(f.Length / 1024), 2).ToString()); // 大小
                    mf.FileType = f.Extension; //获取文件扩展名部分字符串
                    mf.FilePath = f.FullName;// 获取文件或文件夹完整路径
                    list.Add(mf);
                }
                Exists  判断文件或者文件夹是否存在,
                string[] logicalDrives = Directory.GetLogicalDrives();  获取所有盘符

4 以字节流来读取数据
                    fs = new FileStream(this.txtFileName.Text, FileMode.Open);
                    byte[] bytes = new byte[fs.Length];
                    fs.Read(bytes, 0, bytes.Length);
                    System.Text.Encoding encode = System.Text.Encoding.UTF8;
                    string s=encode.GetString(bytes);
                    this.txtContent.Text = s;ok


12章 序列化 反序列化

1.(序列化对象)
            注意:1.保存的文件格式后缀需是bin
                  2.要保存的对象和他关联的对象必须给它设置特性  [Serializable]
            FileStream fs = new FileStream("save.bin", FileMode.Create);
            //二进制方式
            BinaryFormatter bf = new BinaryFormatter();         
            //序列化存贮对象
            bf.Serialize(fs, this.seria);
            fs.Close();
2(反序列化还原对象)
            FileStream fs = new FileStream("save.bin", FileMode.Open);
            BinaryFormatter bf = new BinaryFormatter();
            //把对象还原成object形, 强转就OK了。  数据和序列化之前一样
            this.seria =(SavingInfo)bf.Deserialize(fs);
            fs.Close();

3(特性) . 特性就是在 类 方法 字段前面加 [XXXX]
            [Serializable]  //标识可序列化
            [Obsolete("不要使用旧的方法。",True)]  //标识此方法或类已经过期。。。第二个bool参数为真 就会报错。 为假 则出警告
            [NonSerialized] //标识不可序列化

4(克隆) ICloneable 接口 , MemberwiseClone();//克隆某个对象!
       (1).实现这个接口,里面写具体的克隆方法

5.(动态加载控件和绑定事件)
        private List<Remind> List = new List<Remind>();
        public void SetRemind(List<Remind> list)
        {
            this.List = list;
            int startX = 100; //设置控件的X坐标
            int startY = this.lblMessage.Location.Y + lblMessage.Height + 5; //设置控件的Y坐标
            int i = 0;//循环用变量
            int resizeHeight = 25;//窗体的高度
            foreach (Remind tv in list)
            {
                this.Height += resizeHeight;
                Label lb = new Label(); //创建一个lbl
                lb.Text = tv.tvProgram.ProgramName;//设置lbl的文本值
                lb.Tag = tv; //设置lbl的Tag值
                lb.ForeColor = System.Drawing.Color.Red; //设置lbl的文字颜色 (可以从自动生成代码处复制)
                lb.Visible = true; //设置lbl是否可见
                lb.Width = 350; //设置lbl的宽度
                lb.Font = new System.Drawing.Font("隶书", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); //设置lbl的字体(可以从自动生成代码处复制)
                lb.Location = new Point(startX, startY + i * (5 + lb.Height));//设置lbl的位置
                this.Controls.Add(lb); //当前窗体的添加控件方法 , 把lbl添加进去
                lb.Click += new EventHandler(lb_Click);  //动态绑定事件 代码打到=符号的时候 按两次Tab键 OK了
                i++;
            }
        }

        public void lb_Click(object sender, EventArgs e)
        {
            Label lb = sender as Label;   //sender就是当前选中的控件对象  e是当前选择控件的描述
            frmMain.fb.awmBoF.URL = (lb.Tag as Remind).tvProgram.Way;
            frmMain.fb.Show();
           
        }

14章 影院售票系统
  1.(枚举类型的转换)
     //把字符串转换为枚举类型 第1个参数是枚举类型,第2个是要转换得字符串,返回object型
     m.movieType = (Movie.MovieType)Enum.Parse(typeof(Movie.MovieType), node["Type"].InnerText);
     //把枚举转换为字符串
     this.lblMovieTypeShow.Text = si.movie.movieType.ToString();


2.(断言) using System.Diagnostics; //引用命名空间
          Debug.Assert() 方法断言  如果断言失败 则程序退出。
         
3.(条件编译)     结构和if else if  很相似
          #define D  定义符号
          #define V
#if(D&&V)                         //如果此符号存在则为True 则运行该代码段
            Console.Write(1);
#elif(!D&&V)
            Console.Write(2);
#elif(D&&!V)
            Console.Write(3);
#else
            Console.Write(4);
#endif         //结束 
分享到:
评论

相关推荐

    深入.NET框架

    北大青鸟 二期深入.NET框架 第一章 概念以及实验 案例补充 参考资料 提供学员的资料 PPT 作业答案

    C#第一章 深入.Net框架学习方法技巧

    C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#...

    深入.NET框架下开发三层结构数据库应用系统内测

    深入.NET框架下开发三层结构数据库应用系统

    深入.NET框架和C#编程

    .NET入门经典.NET源代码,让你轻松入门

    Microsoft.NET框架程序设计(修订版)

    本书是《微软.NET程序员系列》丛书之一,主要介绍如何开发面向Microsoft.NET框架的各种应用程序。Microsoft.NET框架是微软公司推出的新平台,包含通用语言运行时(CLR)和.NET框架类库(FCL)。本书将深入解释CLR的工作...

    深入 .NET平台和C#编程

    在 .NET 框架下开发三层结构数据库应用系统(ADO.NE... 3. 授课次序 T 1 L 1 T 2 L 2 T 3 L 3 T 4 L 4 T 5 L 5 DLC 1 T 6 L 6 T 7 L 7 DLC 2 T 8 L 8 T 9 L 9 DLC 3 ...

    深入.NET平台和C#编程笔记

    有关.net的一些基础知识,学习的时候记录。

    深入解析ASP.NET架构官方课程视频

    在本节中,将带领大家去深入了解ASP.NET架构,包括一个HTTP请求的生命周期、HttpModule是如何工作的等。

    Microsoft.NET框架程序设计.part2(扫描清晰版,共3个压缩包)

    Microsoft.NET框架程序设计.part2(扫描清晰版,共3个压缩包) 主要介绍如何开发面向Microsoft .NET框架的各种应用程序。Microsoft .NET框架是微软公司推出的新平台,包含通用语言运行时(CLR)和.NET框架类库(FCL)。...

    Spring.net框架

    在这个系列 中,我仅仅利用Sping.net这个框架向大家展示一下Ioc与AOP的强大功能(呵呵,其实写这段话的目的是因为“文章题目”牛皮吹得有点大了,给自 己个台阶下罢了)。 在这个系列中一共包含6个案例,从简单到...

    解析.Net框架下的XML编程技术

    在深入进行.Net框架下的XML文档的操作之前,我想很有必要向大家介绍.Net框架中与XML技术有关的命名空间和其中一些重要的类。.Net框架为我们提供了以下一些命名空间:System.Xml、System.Xml.Schema、System.Xml....

    适合asp.net开发的后台框架模板

    适合asp.net开发的后台框架模板 EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有...

    Microsoft.NET框架程序设计(高清pdg) - part1

    微软.NET经典原装系列,深入了解.NET底层框架必备之书

    Microsoft.NET框架程序设计(修订版)01

    Microsoft.NET框架程序设计(修订版) PDG电子版文件 学习.NET 必读书 否则就不叫懂DotNet,这本书的有些内容初学者可能有点看不懂,不过没关系,随着以后的深入,就能明白

    Microsoft.NET框架程序设计(高清pdg) - part3

    微软.NET经典原装系列,深入了解.NET底层框架必备之书 请关注我上传的.NET Framework系列。

    Microsoft.NET框架程序设计(高清pdg) - part2

    微软.NET经典原装系列,深入了解.NET底层框架必备之书 请关注我上传的.NET Framework系列。

    Microsoft.NET框架程序设计(修订版)02

    Microsoft.NET框架程序设计(修订版) PDG电子版文件 学习.NET 必读书 否则就不叫懂DotNet,这本书的有些内容初学者可能有点看不懂,不过没关系,随着以后的深入,就能明白 (!***需要用PDG文件阅读器打开***!)

    .net 框架1(CLR Lib)

    本书有助于了解.net 本质,对深入学习.net编程有很大帮助。

    基于.net Framework471搭建的WebAPI简单框架配套demo

    进而对.net的DDD设计模式有想更深入的了解。 适合人群: 具备一定编程基础,工作1年的研发人员 能学到什么: ①依赖注入模式、O/RM对象映射模式; ②IOC、循环依赖都是如何设计和实现的。 阅读建议: 此资源以开发...

Global site tag (gtag.js) - Google Analytics