C# 个人疏漏整理_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > C# 个人疏漏整理

C# 个人疏漏整理

 2013/10/30 23:12:57  往事如锋  博客园  我要评论(0)
  • 摘要:1.dynamic和var不能混为一谈。var声明局部变量只是一种简化语法,var要求编译器根据之后的表达式推断具体的数据类型。var只能用于声明方法内部的局部变量,dynamic则可用于局部变量、字段和参数。表达式不能转型成var,但能转型成dynamic。使用var的时候,变量必须显示初始化。dynamic则无须初始化。比如说vari;//报错vark=1;//正确dynamicj;//正确2.可以使用out或者ref参数对方法进行重载。但是如果两个重载方法只有out和ref的区别
  • 标签:C# 个人

1.dynamic和var不能混为一谈。

  var声明局部变量只是一种简化语法,var要求编译器根据之后的表达式推断具体的数据类型。

  var只能用于声明方法内部的局部变量,dynamic则可用于局部变量、字段和参数。

  表达式不能转型成var,但能转型成dynamic。

  使用var的时候,变量必须显示初始化。dynamic则无须初始化。比如说

var i;//报错
var k=1;//正确
dynamic j;//正确

2.可以使用out或者ref参数对方法进行重载

  但是如果两个重载方法只有out和ref的区别,这就是不合法的,因为两个签名的元数据表示完全相同。

如下是可以通过编译的:

public void Fun1(string x)
{
}

public void Fun1(ref string x)
{
}

但是如果在加上一个out的,如下所示,则编译会报错:

public void Fun1(string x)
{

}

public void Fun1(ref string x)
{

}

//报错信息:Error 1 Cannot define overloaded method 'Fun1' 
// because it differs from another method only on ref and out
public void Fun1(out string x) { x = "x"; }

3.可变数量的参数。关键字params,这个关键字只能应用于方法签名的最后一个参数。示例:

        public static Int32 Add(params Int32[] values)
        {
            Int32 sum = 0;
            if (values != null)
            {
                for (Int32 i = 0; i < values.Length; i++)
                {
                    sum += values[i];
                }
            }
            return sum;
        }

调用Add(1, 2, 3),结果为6

4.像public String Field { get; set; }这样属性极简化写法不能实现序列化和反序列化。

5.所有值类型都有一个隐式的公共无参构造器,可new

 

 

上一篇: 天猫公布“双11”价格规则:50天内最低价 下一篇: 没有下一篇了!
发表评论
用户名: 匿名