C# 2.0 除了泛型

[源码下载]

C# 2.0 除了泛型

作者:webabcd

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

可空类型

图片 1图片 2/**//*
图片 3 *可空类型 
图片 4*/
图片 5using System;
图片 6using System.Data;
图片 7using System.Configuration;
图片 8using System.Collections;
图片 9using System.Web;
图片 10using System.Web.Security;
图片 11using System.Web.UI;
图片 12using System.Web.UI.WebControls;
图片 13using System.Web.UI.WebControls.WebParts;
图片 14using System.Web.UI.HtmlControls;
图片 15
图片 16public partial class CSharp20_Nullable : System.Web.UI.Page
图片 17图片 18图片 19{
图片 20    protected void Page_Load(object sender, EventArgs e)
图片 21图片 22    图片 23{
图片 24        // 针对值类型的可空类型
图片 25        Nullable<DateTime> dt = null;
图片 26        DateTime? dt2 = null;
图片 27
图片 28        // ??分配默认值
图片 29        int? x = null;
图片 30        int y = x ?? -1;
图片 31
图片 32        // x的默认值为0
图片 33        Response.Write(y.ToString());
图片 34    }
图片 35}
图片 36

运作结果
-1

匿名格局

图片 37图片 38/**//*
图片 39 * 匿名方法
图片 40*/
图片 41using System;
图片 42using System.Data;
图片 43using System.Configuration;
图片 44using System.Collections;
图片 45using System.Web;
图片 46using System.Web.Security;
图片 47using System.Web.UI;
图片 48using System.Web.UI.WebControls;
图片 49using System.Web.UI.WebControls.WebParts;
图片 50using System.Web.UI.HtmlControls;
图片 51
图片 52public partial class CSharp20_AnonymousMethod : System.Web.UI.Page
图片 53图片 54图片 55{
图片 56    protected void Page_Load(object sender, EventArgs e)
图片 57图片 58    图片 59{
图片 60        Button btn = new Button();
图片 61        btn.Text = “按钮”;
图片 62        // 一般方法
图片 63        btn.Click += new EventHandler(btn_Click);
图片 64        // 省略掉委托项目
图片 65        btn.Click += btn_Click2;
图片 66        // 不带参数的匿名格局
图片 67图片 68        btn.Click += delegate 图片 69{ Response.Write(“按钮被单击(不带参数的匿名情势)<br />”); };
图片 70        // 带参数的匿名格局(参数数量和体系要一如既往)
图片 71图片 72        btn.Click += delegate(object obj, EventArgs er) 图片 73{ Response.Write(“按钮被单击(带参数的匿名格局)<br />”); };
图片 74
图片 75        Page.Form.Controls.Add(btn);
图片 76    }
图片 77
图片 78    void btn_Click(object sender, EventArgs e)
图片 79图片 80    图片 81{
图片 82        Response.Write(“按钮被单击<br />”);
图片 83    }
图片 84
图片 85    void btn_Click2(object sender, EventArgs e)
图片 86图片 87    图片 88{
图片 89        Response.Write(“按钮被单击(省略掉委托项目)<br />”);
图片 90    }
图片 91}
图片 92

按了按钮后的运作结果
按钮被单击
按钮被单击(省略掉委托项目)
按钮被单击(不带参数的匿名形式)
按钮被单击(带参数的匿名形式)

迭代器

图片 93图片 94/**//*
图片 95 * 迭代器
图片 96 * 要促成foreach必须实现接口IEnumerable或者IEnumerator
图片 97*/
图片 98using System;
图片 99using System.Data;
图片 100using System.Configuration;
图片 101using System.Collections;
图片 102using System.Web;
图片 103using System.Web.Security;
图片 104using System.Web.UI;
图片 105using System.Web.UI.WebControls;
图片 106using System.Web.UI.WebControls.WebParts;
图片 107using System.Web.UI.HtmlControls;
图片 108
图片 109public class Charp20Yield
图片 110图片 111图片 112{
图片 113    public static IEnumerable YieldTest()
图片 114图片 115    图片 116{
图片 117图片 118        string[] ary = new string[] 图片 119{ “a”, “b”, “c”, “d”, “e”, “f”, “g” };
图片 120
图片 121        foreach (string s in ary)
图片 122图片 123        图片 124{
图片 125            if (s != “e”)
图片 126图片 127            图片 128{
图片 129                // 发生枚举元素
图片 130                yield return s;
图片 131            }
图片 132            else
图片 133图片 134            图片 135{
图片 136                // 中断迭代
图片 137                yield break;
图片 138            }
图片 139        }
图片 140    }
图片 141}
图片 142
图片 143
图片 144public partial class CSharp20_Iterator : System.Web.UI.Page
图片 145图片 146图片 147{
图片 148    protected void Page_Load(object sender, EventArgs e)
图片 149图片 150    图片 151{
图片 152        // 使用自定义迭代器
图片 153        foreach (string s in Charp20Yield.YieldTest())
图片 154图片 155        图片 156{
图片 157            Response.Write(s);
图片 158            Response.Write(“<br />”);
图片 159        }
图片 160    }
图片 161}
图片 162

运行结果
a
b
c
d

partial类(注:partial class 中仍可以够支撑 partial
method,当初忘记写了,想看示例的话请参见“背水世界一战 Windows
10”中的相关代码)

图片 163图片 164/**//*
图片 165 * partial类
图片 166*/
图片 167using System;
图片 168using System.Data;
图片 169using System.Configuration;
图片 170using System.Collections;
图片 171using System.Web;
图片 172using System.Web.Security;
图片 173using System.Web.UI;
图片 174using System.Web.UI.WebControls;
图片 175using System.Web.UI.WebControls.WebParts;
图片 176using System.Web.UI.HtmlControls;
图片 177
图片 178// partial类可以写在不同的文书里,实际上尽管取并集,类的梳洗符要一致
图片 179public partial class PartialTest : IDisposable
图片 180图片 181图片 182{
图片 183    public string Get()
图片 184图片 185    图片 186{
图片 187        return “PartialTest”;
图片 188    }
图片 189}
图片 190
图片 191// partial类可以写在不同的文书里,实际上尽管取并集,类的梳洗符要一致
图片 192public partial class PartialTest
图片 193图片 194图片 195{
图片 196    public void Dispose()
图片 197图片 198    图片 199{
图片 200        // 略
图片 201    }
图片 202}
图片 203
图片 204
图片 205public partial class CSharp20_Partial : System.Web.UI.Page
图片 206图片 207图片 208{
图片 209    protected void Page_Load(object sender, EventArgs e)
图片 210图片 211    图片 212{
图片 213        PartialTest pt = new PartialTest();
图片 214        Response.Write(pt.Get());
图片 215        pt.Dispose();
图片 216    }
图片 217}
图片 218

运作结果
PartialTest

其它

图片 219图片 220/**//*
图片 221 * 其它
图片 222*/
图片 223using System;
图片 224using System.Data;
图片 225using System.Configuration;
图片 226using System.Collections;
图片 227using System.Web;
图片 228using System.Web.Security;
图片 229using System.Web.UI;
图片 230using System.Web.UI.WebControls;
图片 231using System.Web.UI.WebControls.WebParts;
图片 232using System.Web.UI.HtmlControls;
图片 233
图片 234// 指定别名
图片 235using xyz = System.Text;
图片 236
图片 237public partial class CSharp20_Other : System.Web.UI.Page
图片 238图片 239图片 240{
图片 241    protected void Page_Load(object sender, EventArgs e)
图片 242图片 243    图片 244{
图片 245        CSharp20_Other_Test c = new CSharp20_Other_Test();
图片 246        c.CurrentTime = DateTime.Now;
图片 247
图片 248        // 下边这句会报错
图片 249        // Response.Write(c.CurrentTime.ToLongDateString());
图片 250
图片 251        // 没问题,因为set是internal的
图片 252        c[2] = “insert”;
图片 253        Response.Write(c[2]);
图片 254        Response.Write(“<br />”);
图片 255
图片 256        // 自定义类与framework类 类名重复时,自定义类优先
图片 257        // xyz是命名空间别名
图片 258        // 访问全局的话用gloab
图片 259        Response.Write(xyz::Encoding.Default.EncodingName);
图片 260    }
图片 261}
图片 262
图片 263public class CSharp20_Other_Test
图片 264图片 265图片 266{
图片 267    private DateTime _currentTime;
图片 268    public DateTime CurrentTime
图片 269图片 270    图片 271{
图片 272        // 给访问器扩张修饰符
图片 273        // 即便接口定义访问器了,则有所继续的都是public
图片 274图片 275        protected get 图片 276{ return _currentTime; }
图片 277图片 278        set 图片 279{ _currentTime = value; }
图片 280    }
图片 281
图片 282图片 283    private string[] ary = new string[] 图片 284{ “a”, “b”, “c”, “d”, “e”, “f”, “g” };
图片 285    public string this[int index]
图片 286图片 287    图片 288{
图片 289图片 290        get 图片 291{ return ary[index]; }
图片 292        // 给索引器扩充修饰符
图片 293图片 294        internal set 图片 295{ ary[index] = value; }
图片 296    }
图片 297}

运转结果
insert
简体中文(GB2312)

OK
[源码下载]

相关文章