• ASP.NET学习笔记3


    2016.4.12

    1、
    IEnumerable接口:
    GetEnumerator()方法,用于返回一个循环访问集合的枚举数
    IEnumerator()接口:
    Object Current{get;}属性,获取集合中的当前元素
    bool MoveNext()方法,访问集合的下一个元素
    void Reset()方法,设置枚举数为其初始位置
     1 public IEnumerator GetEnumerator()
     2         {
     3             return this;
     4             //return this as IEnumerator;
     5         }
     6         //IEnumerator接口的Current属性
     7         public object Current
     8         {
     9             get
    10             {
    11                 switch (flag)
    12                 {
    13                     case 0:
    14                         return "奥迪";
    15                     case 1:
    16                         return "皇冠";
    17                     case 2:
    18                         return "宝马";
    19                     case 3:
    20                         return "奔驰";
    21                     default:
    22                         return "OH,This is Error!";
    23                 }
    24             }
    25         }
    26         //IEnumerator接口的MoveNext方法
    27         public bool MoveNext()
    28         {
    29             flag++;
    30             if (flag == 4)
    31                 return false;
    32             return true;
    33         }
    34         //IEnumerator接口的Reset方法
    35         public void Reset()
    36         {
    37             flag = -1;
    38         }
    IDisposable接口:
    Dispose()方法,执行与释放或重置非托管资源相关应用程序定义的任务。  通过using语句可以释放对象。
    IComparable接口:
    int CompareTo(Object obj)方法,用于返回与obj的大小关系
     1 //实现IComparable.CompareTo方法
     2 //注意无修饰符
     3 int IComparable.CompareTo(object obj)
     4             {
     5                 Student s = (Student)obj;
     6                 if (this.sid > s.sid)
     7                     return 1;
     8                 if (this.sid < s.sid)
     9                     return -1;
    10                 else
    11                     return 0;
    12             }
    2、委托
    委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。
     1  public delegate string GreetingDelegate(string name);//定义委托
     2     public partial class Default : System.Web.UI.Page
     3     {
     4         //接受一个GreetingDelegate类型的Make方法作为参数
     5         public string GreetPeople(string name, GreetingDelegate Make)
     6         {
     7             return Make(name);
     8         }
     9         public static string EnglishGreeting(string name)
    10         {
    11             return "Morning," + name;
    12         }
    13         public static string ChineseGreeting(string name)
    14         {
    15             return "早上好," + name;
    16         }
    17         protected void Page_Load(object sender, EventArgs e)
    18         {
    19             Response.Write(GreetPeople("Jimmy", EnglishGreeting)+"<br/>");
    20             Response.Write(GreetPeople("李四", ChineseGreeting)+"<br/>");
    21 
    22             GreetingDelegate gd1, gd2;
    23             gd1 = EnglishGreeting;
    24             gd2 = ChineseGreeting;
    25             Response.Write(GreetPeople("Ondina", gd1) + "<br/>");
    26             Response.Write(GreetPeople("星夜", gd2) + "<br/>");
    27 
    28             GreetingDelegate gd3;
    29             gd3 = EnglishGreeting;//先给委托变量赋值
    30             gd3 += ChineseGreeting;// 给此委托变量再绑定一个方法
    31             // 将先后调用 EnglishGreeting 与 ChineseGreeting 方法,但只能接收到一个返回值
    32             Response.Write(GreetPeople("Fullbuster", gd3) + "<br/>");
    33             Response.Write(gd3("ISIS") + "<br/>");
    34 
    35             GreetingDelegate gd4 = new GreetingDelegate(EnglishGreeting);
    36             gd4 += ChineseGreeting;//绑定语法
    37             Response.Write(gd4("Lucy") + "<br/>");
    38             gd4 -= ChineseGreeting;//取消绑定语法
    39             Response.Write(gd4("张三") + "<br/>");
    40         }
    41     }

    总结上述委托编程过程,可以从概念上形成以下几个名词:

        1. 委托定义:委托定义的作用是创建一个能够封装一类方法的类型。
        2. 委托字段:在委托编程中需要有一个委托字段,该字段可以用来创建委托对象。也可以把这个委托字段看成为是一个委托类型的变量(简称为委托变量)。于是,随时可以用一个方法对这个委托变量进行赋值。
        3. 委托实例:这是对委托字段的实例化,以形成委托对象。实例化的办法是用一个具有相同签名的方法名对委托变量进行赋值。实例化的作用是把委托字段与实例化方法关联在一起,形成委托对象。因此,无论何时,调用委托就是执行其实例化方法。
        4. 委托属性:可以用委托属性对外暴露委托对象。
        5. 执行/调用委托:执行或调用委托实际上是执行委托对象的实例化方法,执行/调用委托与执行规则的方法一样(送入方法参数、接收返回结果)。
     
    3、具有相同名称的接口
     1 public interface ImyInterface1
     2     {
     3         int Add();
     4     }
     5     public interface ImyInterface2
     6     {
     7         int Add();
     8     }
     9     public class MyClass : ImyInterface1, ImyInterface2  //继承接口
    10     {
    11         int ImyInterface1.Add()//显式接口成员实现
    12         {
    13             int x = 3;
    14             int y = 5;
    15             return x + y; 
    16         }
    17 
    18         int ImyInterface2.Add()//显式接口成员实现
    19         {
    20             int x = 3;
    21             int y = 5;
    22             int z = 7;
    23             return x + y+z;
    24         }
    25

    2016.4.13

    Response对象:程序响应对象
    打开TXT文件:
     1 if (!IsPostBack)//是否为第一次响应
     2             {
     3                 StreamReader sr = File.OpenText(Server.MapPath("大神别乱来.txt"));
     4                 string rt ;
     5                 while ((rt=sr.ReadLine())!= null)
     6                 {
     7                     Response.Write(rt + "<br/>");
     8                 }
     9                 sr.Close();
    10             }
    跳转页面:
        Response.Redirect("admin.aspx");
    设置缓存:
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(10));//设置缓存过期时间10s
        Response.Cache.SetCacheability(HttpCacheability.Public);
        Response.Cache.SetValidUntilExpires(false);//缓存是否应忽略有由使缓存无效的客户端发送的标头
        lb1.Text = "当前系统时间" + DateTime.Now.ToString();//显示当前信息
    输出二进制图像
        Response.BinaryWrite(image);
     
    Request对象:程序请求对象
    获取客户端的IP地址:
        Request.UserHostAddress;
    获取客户端浏览器信息:
        浏览器平台: Request.Browser.Platform;
        浏览器类型:Request.Browser.Type;
        浏览器版本:Request.Browser.Version;
    站内搜索跳转:
        Response.Redirect("result.aspx?key=" + txtKey.Text.Trim());//将请求重定向到新URL并指定新URL
        Request.QueryString["key"].ToString();//获取HTTP查询字符串变量集合
     

    2016.4.14
    Application对象:全局变量应用对象
        该对象所存储的信息可以被多个客户使用,并且在整个Web应用程序运行期间持久的保存。一个客户停止了自己的应用程序,释放了Application对象的共享信息后,不影响其他客户。
        Application["变量名"] = 表达式;
    锁定与解锁:如果不加锁,当多个用户同时访问Application对象时会发生异常
        Application.Lock();
        Application.Unlock();
    全局应用程序类Global.asax:
        Application_Start事件:在首次创建新的会话之前发生
        Application_End事件:在用户退出Web应用程序且所有的会话都过期后发生,用于重要数据的存盘
        Session_Start事件:当新用户访问网站时会触发
        Session_End事件:当用户有效期失效时会触发

    Session对象:会话信息处理对象
    页面之间传值:
        Session["变量名"]="内容";
        Name = Session["变量名"];
    设置Session会话时间为一分钟,session对象的会话时间是以分钟为单位的:
        Session.Timeout = 1;
     
    Cookie对象:缓存对象
    1 Response.Cookies["username"].Expires = DateTime.Now.AddDays(30);
    2 Response.Cookies["userpwd"].Expires = DateTime.Now.AddDays(30);
    3 Response.Cookies["username"].Value = txtname.Text.Trim();
    4 Response.Cookies["userpwd"].Value = txtpwd.Text.Trim();
    要将输入用户名的文本框的AutoPostBack属性设为true,这样,但用户输入用户名后,会自动回发到服务器,执行TextChanged事件下的代码
        Response.Cookies["username"].Expires:Cookie有效时间
        Response.Cookies["username"].Name:Cookie变量名
        Response.Cookies["username"].Value:Cookie变量值
     
    创建Cookie对象:
    1 HttpCookie newCookie = new HttpCookie("userIP");
    2 newCookie.Values.Add("IPaddress", UserIP);//将IP地址存储到Cookie对象中
    3 newCookie.Expires = DateTime.Now.AddMonths(1);//设置有效期为一个月
     
    Sever对象:服务器信息处理对象
    1 Server.MapPath("upload");//MapPath返回与Web服务器上指定虚拟路径相对性的绝对路径
    2 Server.MachineName;//获取服务器计算机的名称
    3 Server.UrlEncode;//对汉字进行编码
    4 Server.UrlDecode;//对汉字进行解码
  • 相关阅读:
    vue项目中npm安装sass,less,stylus
    jQueryniceScroll滚动条错位问题
    基于github发布 个人网站/博客
    【转载】预处器的对比——Sass、LESS和Stylus
    元素,布局方式,BFC和清除浮动
    使用git向github中添加项目并更新(备忘录)
    nginx 之 grok 过滤
    gitlab 同步小脚本
    svn同步小脚本
    使用pip命令自动生成项目安装依赖清单
  • 原文地址:https://www.cnblogs.com/xingye3327/p/5392782.html
Copyright © 2020-2023  润新知