WEB开发网
开发学院软件开发C语言 c# 4.0新特性一览 阅读

c# 4.0新特性一览

 2009-03-02 08:17:59 来源:WEB开发网   
核心提示: 对第1点和第5点的简单解释如下:在COM调用中,很多输入输出类型都是object,c# 4.0新特性一览(4),这样就必须知道返回对象的确切类型,强制转换后才可以调用相应的方法,如:publicinterfaceIEnumerable<outT>:IEnumerable{IEn

对第1点和第5点的简单解释如下:

在COM调用中,很多输入输出类型都是object,这样就必须知道返回对象的确切类型,强制转换后才可以调用相应的方法。在4.0中有了dynamic的支持,就可以在导入这些COM接口时将变量定义为dynamic而不是object,省掉了强制类型转换。

PIA(Primary Interop Assemblies)是根据COM API生成的.Net Assembly,一般体积比较大。在4.0中运行时不需要PIA的存在,编译器会判断你的程序具体使用了哪一部分COM API,只把这部分用PIA包装,直接加入到你自己程序的Assembly里面。

Co- and Contra-Variance

实在是不知道怎么翻译这两个词。

在C#中,下面的类型转换是非法的:

IList<string> strings = new List<string>();
IList<object> objects = strings;

因为你有可能会这样做,而编译器的静态检查无法查出错误:

objects[0] = 5;
string s = strings[0];

4.0中在声明generic的Interface及Delegate时可以加in及out关键字,如:

public interface IEnumerable<out T> : IEnumerable
{
IEnumerator<T> GetEnumerator();
}
public interface IEnumerator<out T> : IEnumerator
{
bool MoveNext();
T Current { get; }
}

public interface IComparer<in T>
{
public int Compare(T left, T right);
}

out关键字的意思是说IEnumerable<T>中T只会被用在输出中,值不会被改变。这样将IEnumerable<string>转为IEnumerable<object>类型就是安全的。

上一页  1 2 3 4 5  下一页

Tags:特性 一览

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接