C#2.0锐利体验之杂项技术及未来发展学习笔记

     抽空闲的时间,看了李建忠老师讲的"C#2.0锐利体验---杂项技术,以及C#语言的未来发展"课程。对某些很小的知识点进行了回顾和总结。这里整理要点。

一、命名空间别名限定符的引入

C# 2.0允许我们使用命名空间别名限定符(::)来避免不同命名空间中类型名称冲突的问题。

1.当使用命名空间别名限定符(::)时候,编译器可以确保这是一个只适用于"命名空间别名"的限定符,不会辨析为其他类型、或者成员限定符(.)

2.关键字globar可以放在命名空间别名限定符(::)的左边,它使得编译器只去搜索那些所有的命名空间,而不会去搜索其他类型、或者成员。(命名空间的名字和类名相同引起冲突问题)

3.尽可能地使用命名空间别名限定符(::),而减少使用点号(.)这样的通用限定符。

二、#Pragma指示符

代码
        [Obsolete]
        
static void Foo() { }
        
static void Main(string[] args)
        {
            
#pragma warning disable 612
            Foo();
            
#pragma warning restore 612
        }

 注意点:

1.目前Pragma指示符只支持#Pragma warning

2.#pragma warning disable可以禁掉任何编译器警告信息

3.#pragma warning restore可以恢复被disable掉的任何编译器警告信息。

4.可以在disable和restore后面跟上具体的警告代码号,从而来禁止或者恢复特定的警告信息。

5.#pragma是一个编译器预处理功能,不影响任何代码运行机制。

三、属性访问器的保护级别

C# 2.0允许我们对一个属性的get和set访问器使用不同的访问级别修饰符:

public string Name
{
  
get { return name; }
  
private set { name = value; }
}

注意:

1、属性访问器(get或set)上应用的访问修饰符必须"小于"(更严格),例如:Protected小于Public

2、只能在一个属性访问器(get或set)上指定比属性上访问呢修饰符"更小"的访问呢修饰符。

3、对于接口中属性的声明,不能给属性访问器(get或set)指定任何访问修饰符,只能默认为Public

4、属性访问器保护级别的变化规则完全适用于C#的索引器(但是索引器不能申明为Static)。

Best Regards,

Charles Chen

http://charles2008.cnblogs.com/

原文地址:https://www.cnblogs.com/Charles2008/p/1736543.html