代码
2-1 CLS
规范:
CLS.cs
在 代码 2-1 中,程序通过 CLSCompliantAttribute 特性来申明 CLS 类型需要符合 CLS 规范。 C# 中的 uint 类型在 CLS 中没有对应的 类型,所以 uint 是不符合 CLS 的语言部分。在 CLS 类的一开始,程序定义了一个 uint 类型的私有成员变量 i ,这里并没有造成 CLS 类不符合 CLS 规 范,因为私有变量只对类内部可见。而之后程序定义了一个返回 uint 类型的公共方法,这里造成了整个 CLS 类型不符合 CLS 规范。编译这段代码,会得到以 下警告:
using System;
using System.Collections.Generic;
using System.Text;
//申明C符合CLS规范
[assembly: CLSCompliantAttribute(true)]
namespace NET.MST.Second
{
public class CLS
{
private uint i; //这是一个私有成员,所以不违反CLS规范
public CLS()
{
i=0;
}
static void Main(string[] args)
{
}
//这里不符合CLS规范,uint在CLS中没有定义
public uint GetI()
{
return i;
}
}
}
在 代码 2-1 中,程序通过 CLSCompliantAttribute 特性来申明 CLS 类型需要符合 CLS 规范。 C# 中的 uint 类型在 CLS 中没有对应的 类型,所以 uint 是不符合 CLS 的语言部分。在 CLS 类的一开始,程序定义了一个 uint 类型的私有成员变量 i ,这里并没有造成 CLS 类不符合 CLS 规 范,因为私有变量只对类内部可见。而之后程序定义了一个返回 uint 类型的公共方法,这里造成了整个 CLS 类型不符合 CLS 规范。编译这段代码,会得到以 下警告:
C:\David\NET MST\第章\CLS.cs(23,21): warning CS3002: Return type of'NET.MST.Second.CLS.GetI()' is not CLS-compliant
来自进入IT企业必读的200个+.net面试题