[×××]

C# 2.0 除了泛型

作者:webabcd

介绍
C# 2.0 除了泛型之外的东东。

可空类型

/*
*可空类型    
*/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class CSharp20_Nullable : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
                // 针对值类型的可空类型
                Nullable<DateTime> dt = null;
                DateTime? dt2 = null;

                // ??分配默认值
                int? x = null;
                int y = x ?? -1;

                // x的默认值为0
                Response.Write(y.ToString());
        }
}
运行结果
-1

匿名方法

/*
* 匿名方法
*/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class CSharp20_AnonymousMethod : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
                Button btn = new Button();
                btn.Text = "按钮";
                // 一般方法
                btn.Click += new EventHandler(btn_Click);
                // 省略掉委托类型
                btn.Click += btn_Click2;
                // 不带参数的匿名方法
                btn.Click += delegate { Response.Write("按钮被单击(不带参数的匿名方法)<br />"); };
                // 带参数的匿名方法(参数数量和类型要一致)
                btn.Click += delegate(object obj, EventArgs er) { Response.Write("按钮被单击(带参数的匿名方法)<br />"); };

                Page.Form.Controls.Add(btn);
        }

        void btn_Click(object sender, EventArgs e)
        {
                Response.Write("按钮被单击<br />");
        }

        void btn_Click2(object sender, EventArgs e)
        {
                Response.Write("按钮被单击(省略掉委托类型)<br />");
        }
}
按了按钮后的运行结果
按钮被单击
按钮被单击(省略掉委托类型)
按钮被单击(不带参数的匿名方法)
按钮被单击(带参数的匿名方法)

迭代器

/*
* 迭代器
* 要实现foreach必须实现接口IEnumerable或者IEnumerator
*/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public class Charp20Yield
{
        public static IEnumerable YieldTest()
        {
                string[] ary = new string[] { "a", "b", "c", "d", "e", "f", "g" };

                foreach (string s in ary)
                {
                        if (s != "e")
                        {
                                // 产生枚举元素
                                yield return s;
                        }
                        else
                        {
                                // 中断迭代
                                yield break;
                        }
                }
        }
}


public partial class CSharp20_Iterator : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
                // 使用自定义迭代器
                foreach (string s in Charp20Yield.YieldTest())
                {
                        Response.Write(s);
                        Response.Write("<br />");
                }
        }
}
运行结果
a
b
c
d

partial类

/*
* partial类
*/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

// partial类可以写在不同的文件里,实际上就是取并集,类的修饰符要一致
public partial class PartialTest : IDisposable
{
        public string Get()
        {
                return "PartialTest";
        }
}

// partial类可以写在不同的文件里,实际上就是取并集,类的修饰符要一致
public partial class PartialTest
{
        public void Dispose()
        {
                // 略
        }
}


public partial class CSharp20_Partial : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
                PartialTest pt = new PartialTest();
                Response.Write(pt.Get());
                pt.Dispose();
        }
}
运行结果
PartialTest

其它

/*
* 其它
*/
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

// 指定别名
using xyz = System.Text;

public partial class CSharp20_Other : System.Web.UI.Page
{
        protected void Page_Load(object sender, EventArgs e)
        {
                CSharp20_Other_Test c = new CSharp20_Other_Test();
                c.CurrentTime = DateTime.Now;

                // 下面这句会报错
                // Response.Write(c.CurrentTime.ToLongDateString());

                // 没问题,因为set是internal的
                c[2] = "insert";
                Response.Write(c[2]);
                Response.Write("<br />");

                // 自定义类与framework类 类名重复时,自定义类优先
                // xyz是命名空间别名
                // 访问全局的话用gloab
                Response.Write(xyz::Encoding.Default.EncodingName);
        }
}

public class CSharp20_Other_Test
{
        private DateTime _currentTime;
        public DateTime CurrentTime
        {
                // 给访问器增加修饰符
                // 如果接口定义访问器了,则所有继承的都是public
                protected get { return _currentTime; }
                set { _currentTime = value; }
        }

        private string[] ary = new string[] { "a", "b", "c", "d", "e", "f", "g" };
        public string this[int index]
        {
                get { return ary[index]; }
                // 给索引器增加修饰符
                internal set { ary[index] = value; }
        }
}
运行结果
insert
简体中文(GB2312)

OK
[×××]

转载于:https://blog.51cto.com/webabcd/345400

C# 2.0 除了泛型相关推荐

  1. C#2.0 泛型初探 (特性一览)

    1.C#泛型由CLR在运行时支持,编译为IL时使用占位符和特列的IL指令,JIT时再真正的泛型实例化,区别于C++的编译时模板机制和Java的搽试法.     a.可在各CLR语言之间无缝结合:    ...

  2. 关于 Golang 2.0 的泛型

    今天看到HN的一篇关于 Go2 Generics 的讨论.有网友说到: Ken Thompson and Rob Pike are mostly out not at all involved wit ...

  3. [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性

    前言 下面就开始总结C#4.0的一些变化了, 也是这本书中最后的一点内容了, 这一部分终于要更新完了. 同时感觉再来读第二遍也有不一样的收获. 今天很嗨的是武汉下雪了,明天周六,一切都是这么美好.哈哈 ...

  4. .NET 2.0 泛型在实际开发中的一次小应用

    早闻.NET 2.0中泛型的大名,但一直未在实际开发中使用. 最近在开发博客园网站程序的过程中体验了一下. 应用场景:      在配置文件中通过反序列化读取相应的邮件设置. 配置文件示例: < ...

  5. c#3.0加入的一些新特性——泛型集合

    c#3.0加入的一些新特性 1.泛型集合 2.隐式类型 3.自动实现属性 3.匿名方法 4.扩展方法 5.Lambda表达式 1.泛型集合 在.NET2.0中没有泛型集合定义集合用ArrayList定 ...

  6. JDK5.0新特性之:泛型

    文/陈刚 2005-11-09 一.前言 泛型这个词在现在的JAVA挺时髦,光从字面上你是无法知道它代表些什么东东的,所以我们还是不要从字面去理解,而是从一些实例去了解它吧. 二.泛型之前的日子 JD ...

  7. C#2.0中的泛型学

    之前对于泛型一直没有个系统的学习,只是懂得如何调用而已,今天就结合MSDN和网上的一些文章对C#2.0的泛型进行深入研究. 1. 概述 泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的 ...

  8. .NET 2.0泛型集合类与.NET 1.1集合类的区别(一)

    本文旨在阐述.NET 2.0泛型集合类与.NET 1.1集合类在使用中的区别,而不是介绍泛型的优势或者使用.这篇文章假设你已经会简单使用泛型来编程. 本文章使用.NET 2.0的2.0.50215.4 ...

  9. Java基础篇:泛型

    文章目录 1.为什么要有泛型 2.在集合中使用泛型 3.自定义泛型结构 4.泛型在继承上的体现 5.通配符的使用 1.为什么要有泛型 泛型:标签 泛型背后的核心思想就是:把一个集合中的内容限制为一个特 ...

最新文章

  1. linux sar 命令详解
  2. 那些不能错过的Xcode插件
  3. 3-3-完全二叉树结点数
  4. python2 urllib 笔记
  5. LeetCode Valid Parentheses(判断括号是否匹配)
  6. Java匿名内部类总结
  7. oracle在数据表中获取年月日时分秒
  8. Java 静态导入 、可变参数
  9. Flutter Web:Shadow Root问题
  10. devexpress textedit调整文字何文本框的间距_手把手教学:用PPT做效果超赞的文字效果...
  11. 2015-2016-1学期 《信息安全系统设计基础》课程总结
  12. Mysql 索引(学习笔记十二)
  13. 红帽干掉 CentOS 8,CentOS Stream 上位
  14. 修改Code Blocks默认代码格式
  15. iOS Workspace内多project开发
  16. Streamline(流线),Pathline(迹线),Streakline(脉线) and Timeline(时间线)
  17. html的frame怎么使用方法,HTML frame标签怎么用?frame标签的具体使用实例
  18. JavaSE入门0基础笔记 第二章Java基础语法
  19. 计算机cpu频率时钟周期,关于cpu:什么是时钟周期和时钟速度?
  20. ARIMA模型原理及实现

热门文章

  1. android 全局进度条,Android:如何在中心显示全屏进度条
  2. Sqlite-Sqlite3中的数据类型
  3. c语言比较麻烦的编程题,C语言编程题,比较简单
  4. math.floor java_Java Math.floor() 方法
  5. ajax如何将数据写入文本框,ajax 从数据库读到文本框
  6. 电脑安装android2.0,电脑上怎么安装使用安卓系统
  7. java读取pi_(树莓派csi相机)使用Java从raspivid-stdout读取h...
  8. mxnet基础到提高(38)-自动梯度计算
  9. PowerBI随笔(2)-分组依据进行分组汇总
  10. 【学术相关】考研生对导师“嚣张发言”引热议:希望您今年招个女同学,不然我换导师!...