c#3.0学习

隐含类型局部变量

隐含类型的局部变量是用var关键字来声明的,如下:

var i = 123;
var h=123.123;
var s = “oec2003";
var intArr = new[] {1,2,3,4} ;
var a = new[] { 1, 10, 100, 1000 };

乍一看有点像javascript中的声明方式,虽然关键字一样但是有着本质区别。

在c#3.0中用var关键字声明的变量被赋值后,在编译时编译器会根据变量值的类型自动推断出变量的类型。所以仍然是强类型,这点和object不同。其实var 关键字并不是一个具体的类型,只是起到了一个占位符的作用,编译后将替换成相应的类型。要注意的一点是用var声明的变量一定要赋初始值,否则会出现编译错误,因为如果不赋值就无法根据值来推断变量的类型。

var只能声明局部变量,而且可以在foreach中使用,如:

var nums=new []{1,2,3,4,5};
foreach(var i in nums)
{
 
}

扩展方法

这是个非常有用的特性,扩展方法允许我们在不改变源码的情况下添加现有类型中的实例方法。扩展方法所在的类必须为静态类。如下:

public static class oec2003Extensions
  {
    public static bool IsValidEmail(this String s)
    {
      Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
      return regex.IsMatch(s);
    }
  }

上面的IsValidEmail静态方法在静态类oec2003Extensions类中,这个类可以在任何的名称空间下,在要用的地方引用名称空间就行。

IsValidEmail方法的作用是用来验证电子邮件。方法中有三个参数:this String s 。this只是一个编译上的要求,作为一个提示来告诉编译器此方法有可能作为扩展方法来使用;String就是我们需要扩展的类型;s则为要验证邮件的内容。下面来看看怎样来使用此扩展方法。

protected void Button2_Click(object sender, EventArgs e)
    {
      if (this.TextBox1.Text.Trim().IsValidEmail())
      {
        Response.Write("email is right");
      }
      else
      {
        Response.Write("email is error");
      }
    }

是不是很神奇,在string类型中就多了一个刚才添加的IsValidEmail方法,可以直接调用,用来实现邮件地址的验证。

时间: 2024-08-12 23:01:12

c#3.0学习的相关文章

ExtJs2.0学习系列(2)--Ext.Panel

上一篇文章ExtJs2.0学习系列(1)--Ext.MessageBox ,受到了大家的褒贬不一,还是有的朋友提出好的建议,在此表示感谢! 今天介绍extjs中的Panel组件. //html代码 <div id="container"> </div> //js代码 var p = new Ext.Panel({ title: 'My Panel',//标题 collapsible:true,//右上角上的那个收缩按钮,设为false则不显示 renderTo:

ExtJs2.0学习系列(6)--Ext.FormPanel之第三式(ComboBox篇)

前言:说句实话,此extjs系列的文章在博客园中的热度不高,可能是学这玩意的人不多吧,但是我觉得有这么个系列的文章对于中国朋友非常有帮助!请大家支持! 上篇ExtJs2.0学习系列(5)--Ext.FormPanel之第二式中我们讨论了下fieldset和表单验证的知识,今天我们接着深入解析表单元素中ComboBox组件的使用.会涉及 到.net简单服务器数据交互,但暂不做深入讨论,以后会详细分析服务器交互相关,不过可能要等较长一段时间,呵呵! 5.服务器数据作为ComboBox的数据源实例 首

ExtJs2.0学习系列

ExtJs2.0学习系列(15)--extjs换肤 ExtJs2.0学习系列(14)--Ext.TreePanel之第三式(可增删改的树) ExtJs2.0学习系列(13)--Ext.TreePanel之第二式 ExtJs2.0学习系列(12)--Ext.TreePanel之第一式 ExtJs2.0学习系列(11)--Ext.XTemplate ExtJs2.0学习系列(10)--Ext.TabPanel之第二式 ExtJs2.0学习系列(9)--Ext.TabPanel之第一式 ExtJs2.

ExtJs2.0学习系列(12)--Ext.TreePanel之第一式

今天开始,我们就开始一起学习TreePanel了,道个歉,上篇的代码很乱阿. 我总是喜欢用最简单的例子开始,去理解最基本的使用方法,减少对i后面高级使用的干扰! TreePanel是继承自Panel,所以很多在Panel中谈到的属性这里可能会一笔带过,如有问题,请参考ExtJs2.0学习系列(2)--Ext.Panel 1.第一个静态树--最简单的树 效果图: html代码: <div id="container"> </div> js代码: Ext.onRea

ExtJs2.0学习系列(3)--Ext.Window

前面介绍了panel组件--ExtJs2.0学习系列(2)--Ext.Panel,今天将介绍window组件,它继承自panel. 先介绍个最简单例子 //html代码 <div id="win" class="x-hidden"> </div> //js代码 var w=new Ext.Window({ contentEl:"win",//主体显示的html元素,也可以写为el:"win" width

Bootstrap3.0学习第三轮:栅格系统案例

在前面的一篇文章<Bootstrap3.0学习第二轮:栅格系统原理 >当中主要学习了栅格系统的基本原理,以及通过简单案例进行对原理的实践. 那么本文的主要内容将主要分为以下几个部分:1.栅格选项;2.从堆叠到水平排列;3.移动设备和桌面;4.Responsive column resets;5.列偏移;6.嵌套列;7.列排序;8.总结. 栅格选项 通过下面的截图可以比较清楚的来查看Bootstrap的栅格系统是如何在多种不同的移动设备上面进行工作的. 从上面的截图可以看出来,Bootstrap

求《XNA4.0学习指南》源码

问题描述 求<XNA4.0学习指南>源码,论坛里搜的下不来.希望哪位好人给个能下的,或者发到小弟邮箱!不胜感激涕零!1065903439@qq.com 解决方案

ExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他组件示例篇)

N久没有写extjs的,作为一个新手,我为我的这种懒惰行为感到惭愧! 鉴于有朋友反应前面的文章过于简单,我决定以后的文章如果没有闪光点就放在新手区(如果不适合,请跟帖),不放在首页! 11.checkbox简单示例 效果图: js代码: Ext.onReady(function(){ Ext.QuickTips.init(); var myform=new Ext.FormPanel({ frame:true, width:330, layout:"form", labelWidth:

到底什么是Web2.0 - Web2.0学习指南

web|web2 (转载自http://www.klogs.org/archives/2005/07/nieweb_20_o.html ) 历史很重要.对一个技术的学习也应当从历史出发,通过其在时间形成历史的流变,得以知晓现状,甚至能够预知未来. 那Web1.0是什么呢? 他们说,记得静态HTML的WWW时代么? (那个时代的WWW应用.人们的Web体验.对社会的影响如何?) 那么动态HTML和静态HTML下的Web相比,是多少版本?1.5?对了,他们是真这么叫的. (在效果和影响上,与1.0相

Bootstrap3.0学习第一轮:入门

在上一节中Bootstrap3.0入门学习系列:学习从现在开始 ,主要是简单的介绍了一下Bootstrap.从bootcss中文网的两个版本文档说明(Bootstrap2中文文档和Bootstrap3中文文档)中,可以看出这两个版本的差别还是蛮大的. 不过从Visual Studio 2013前不久的更新中看,微软是将Bootstrap3的新版本加入到了VS当中,所以也没什么好说的了,学习Bootstrap3也没什么顾虑了. 下载BootStrap 官网的文件很详细简单,对于下载来说也有多种方式