易截截图软件、单文件、免安装、纯绿色、仅160KB

C# 3.0新特性系列:隐含类型var

一.神奇的var
  在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的 var类似,但也有不同。
  1. 相同点,它可以用var来声明任何类型的局部变量。
  2. 不同点,它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。
  二.相同点
  它可以声明
var integer = 10;
var name = "edisundong";
var numbers = new int[] { 1, 2, 3 };
  三.不同点
  var仅仅是一个关键字,它并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于
int integer = 10;
string name = " edisundong ";
int[] numbers = new int[] { 1, 2, 3 };
  三.注意点
  1.在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式,如果有下面的语句:
var integer;
integer = 10;
  编译时会报Implicitly typed locals must be initialized错误。
  2.在使用var声明一个局部变量后,它仍然具有强类型,可以做如下测试:
var integer = 10;
integer = " edisundong ";
  编译时会报Cannot implicitly convert type 'string' to 'int'错误。
  3. 初始化器表达式的编译期类型不可以是空(null)类型,编译器无法根据null来推断出局部变量的类型,如有下面的语句:
var integer = null;
  编译时会报Cannot assign '<null>' to an implicitly typed local错误。
  4. 初始化语句必须是一个表达式,初始化表达式不能包含它自身,但是可以是包含一个对象或集合初始化器的一个new表达式(即匿名类型)。
  如可以这样去声明:
var coll = new Hashtable();
  5. var的声明仅限于局部变量,也可以包含在foreach、for、using语句中。下面的使用是错误的:
class Program
{
 private var i = 10; //全局私有变量。
 static void Main(string[] args)
 { }
}
  编译时会报The contextual keyword 'var' may only appear within a local variable declaration错误。


相关文档:

.net(c#)读取flash(swf)文件的尺寸

用了别人的代码,推荐+备忘。
原帖地址:
.net(c#)读取flash(swf)文件的尺寸
http://www.cnblogs.com/nasdaqhe/archive/2008/07/02/1234357.html
用.NET读取Flash格式文件信息
http://www.cnblogs.com/gmm/archive/2007/07/17/310675.html
我使用了第一个帖子中的代码,第一个帖子的代码参考的是第二个帖子:)
The ......

c# 支持XML序列化的泛型 Dictionary

/// <summary>
/// 支持XML序列化的泛型 Dictionary
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TValue"></typeparam>
[XmlRoot("SerializableDictionary")]
public class SerializableDictionary<TKey, TValue& ......

C#中ref参数与out参数的区别

先贴代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Ref_and_Out_test
{
    class Program
    {
        static void Main(string[] args)
      & ......

C#中String.Empty与""

    这两个在一般情况下是相等的,但是系统处理机制上却有所不同。
    ""会在内存里划一块长度为0的存储空间,而String.Empty内存并不为它分配空间,所以无论性能还是速度上String.Empty都优于""。
    曾经看过一篇判断字符串空值的性能文章,老外写的国人翻译,文章大意 ......

浅谈C#泛型的用处

为什么要使用C#泛型?
为了了解这个问题,我们先看下面的代码,代码省略了一些内容,但功能是实现一个栈,这个栈只能处理int数据类型:
public class Stack
    {
        private int[] m_item;
        public ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号