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 除了泛型相关推荐
- C#2.0 泛型初探 (特性一览)
1.C#泛型由CLR在运行时支持,编译为IL时使用占位符和特列的IL指令,JIT时再真正的泛型实例化,区别于C++的编译时模板机制和Java的搽试法. a.可在各CLR语言之间无缝结合: ...
- 关于 Golang 2.0 的泛型
今天看到HN的一篇关于 Go2 Generics 的讨论.有网友说到: Ken Thompson and Rob Pike are mostly out not at all involved wit ...
- [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
前言 下面就开始总结C#4.0的一些变化了, 也是这本书中最后的一点内容了, 这一部分终于要更新完了. 同时感觉再来读第二遍也有不一样的收获. 今天很嗨的是武汉下雪了,明天周六,一切都是这么美好.哈哈 ...
- .NET 2.0 泛型在实际开发中的一次小应用
早闻.NET 2.0中泛型的大名,但一直未在实际开发中使用. 最近在开发博客园网站程序的过程中体验了一下. 应用场景: 在配置文件中通过反序列化读取相应的邮件设置. 配置文件示例: < ...
- c#3.0加入的一些新特性——泛型集合
c#3.0加入的一些新特性 1.泛型集合 2.隐式类型 3.自动实现属性 3.匿名方法 4.扩展方法 5.Lambda表达式 1.泛型集合 在.NET2.0中没有泛型集合定义集合用ArrayList定 ...
- JDK5.0新特性之:泛型
文/陈刚 2005-11-09 一.前言 泛型这个词在现在的JAVA挺时髦,光从字面上你是无法知道它代表些什么东东的,所以我们还是不要从字面去理解,而是从一些实例去了解它吧. 二.泛型之前的日子 JD ...
- C#2.0中的泛型学
之前对于泛型一直没有个系统的学习,只是懂得如何调用而已,今天就结合MSDN和网上的一些文章对C#2.0的泛型进行深入研究. 1. 概述 泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的 ...
- .NET 2.0泛型集合类与.NET 1.1集合类的区别(一)
本文旨在阐述.NET 2.0泛型集合类与.NET 1.1集合类在使用中的区别,而不是介绍泛型的优势或者使用.这篇文章假设你已经会简单使用泛型来编程. 本文章使用.NET 2.0的2.0.50215.4 ...
- Java基础篇:泛型
文章目录 1.为什么要有泛型 2.在集合中使用泛型 3.自定义泛型结构 4.泛型在继承上的体现 5.通配符的使用 1.为什么要有泛型 泛型:标签 泛型背后的核心思想就是:把一个集合中的内容限制为一个特 ...
最新文章
- linux sar 命令详解
- 那些不能错过的Xcode插件
- 3-3-完全二叉树结点数
- python2 urllib 笔记
- LeetCode Valid Parentheses(判断括号是否匹配)
- Java匿名内部类总结
- oracle在数据表中获取年月日时分秒
- Java 静态导入 、可变参数
- Flutter Web:Shadow Root问题
- devexpress textedit调整文字何文本框的间距_手把手教学:用PPT做效果超赞的文字效果...
- 2015-2016-1学期 《信息安全系统设计基础》课程总结
- Mysql 索引(学习笔记十二)
- 红帽干掉 CentOS 8,CentOS Stream 上位
- 修改Code Blocks默认代码格式
- iOS Workspace内多project开发
- Streamline(流线),Pathline(迹线),Streakline(脉线) and Timeline(时间线)
- html的frame怎么使用方法,HTML frame标签怎么用?frame标签的具体使用实例
- JavaSE入门0基础笔记 第二章Java基础语法
- 计算机cpu频率时钟周期,关于cpu:什么是时钟周期和时钟速度?
- ARIMA模型原理及实现
热门文章
- android 全局进度条,Android:如何在中心显示全屏进度条
- Sqlite-Sqlite3中的数据类型
- c语言比较麻烦的编程题,C语言编程题,比较简单
- math.floor java_Java Math.floor() 方法
- ajax如何将数据写入文本框,ajax 从数据库读到文本框
- 电脑安装android2.0,电脑上怎么安装使用安卓系统
- java读取pi_(树莓派csi相机)使用Java从raspivid-stdout读取h...
- mxnet基础到提高(38)-自动梯度计算
- PowerBI随笔(2)-分组依据进行分组汇总
- 【学术相关】考研生对导师“嚣张发言”引热议:希望您今年招个女同学,不然我换导师!...