[C#2] 3-局部类型、属性访问器保护级别、命名空间别名限定符

简介: 1. 局部类型 C#1.0中,一个类只可以放在一个文件中。C#2.0中用了一个关键字"partial", 可以把一个类分成两个部分[即一个类的实现可以在多个文件中]。 编译结果和写在一个文件中完全相同,更多的意义在于工程化的管理。

1. 局部类型

C#1.0中,一个类只可以放在一个文件中。C#2.0中用了一个关键字"partial", 可以把一个类分成两个部分[即一个类的实现可以在多个文件中]。 编译结果和写在一个文件中完全相同,更多的意义在于工程化的管理。

局部类型值适用与接口、类或者结构中,不支持枚举[一般也没这么大的枚举吧];

同一个类型的各个部分必须都有修饰符partial,必须位于相同的命名空间中,必须同时编译、访问修饰符必须维持一致性;

关键字partial 是一个上下文关键字,只有和class、struct、interface放在一起时才有关键字的含义;

局部类型上的特性和接口具有累加效应;

如果一个类型有一个部分使用了abstract修饰符,那么整个类将被视为抽象类;

如果一个类型有一个部分使用了sealed修饰符,那么整个类将被视为密封类;

各部分不能使用相互矛盾的修饰符,比如不能在一个部分上使用abstract,又在另一个部分上使用sealed;

各部分上指定的基类必须一致。某些部分可以不指定基类,但如果指定,则必须相同。

2. 属性访问器保护级别

C# 2.0允许对一个属性的get和set访问器使用不同的访问级别修饰符[注意属性访问器和属性的概念]。

属性访问器(get或set)上的访问修饰符必须比属性的访问修饰符更严格;

只能在一个属性访问器(get或set)上指定 访问修饰符,另一个默认使用属性的访问修饰符;

对于接口中的属性只能默认为public,不能设置属性访问器(get或set)的访问修饰符。

3. 命名空间别名限定符

C#2.0允许使用命名空间别名限定符(::)来避免不同命名空间中类型名称冲突的问题。 当使用命名空间别名限定符(::)时编译器可以确保这是一个只适用于"命名空间别名"的限定符[查看IL代码中使用的就是::], 不会辨析为其他类型、或者成员限定符(.)。关键字global可以放在命名空间别名限定符(::)的左边, 它使得编译器只去搜索那些所有的命名空间,而不会去搜索其他的类型、或者成员。尽可能地使用命名空间别名限定符(::), 而减少使用点号(.)这样的通用限定符[加快编译器搜索类型,编译后无任何区别]。

作者: Blackheart
目录
相关文章
|
3天前
|
C#
C# DataTable不能通过已删除的行访问该行的信息
C# DataTable不能通过已删除的行访问该行的信息
|
3天前
|
存储 安全 编译器
C# 11.0中的泛型属性:类型安全的新篇章
【1月更文挑战第23天】C# 11.0引入了泛型属性的概念,这一新特性为开发者提供了更高级别的类型安全性和灵活性。本文将详细探讨C# 11.0中泛型属性的工作原理、使用场景以及它们对现有编程模式的改进。通过深入了解泛型属性,开发者将能够编写更加健壮、可维护的代码,并充分利用C#语言的最新发展。
|
3天前
|
存储 编译器 C#
|
3天前
|
JavaScript 前端开发 C#
C# webbrowser控件设置代理IP访问网站
C# webbrowser控件设置代理IP访问网站
194 5
|
3天前
|
C#
C# Dev TreeList常用属性方法
C# Dev TreeList常用属性方法
|
3天前
|
Java C#
C#学习相关系列之多线程(七)---Task的相关属性用法
C#学习相关系列之多线程(七)---Task的相关属性用法
|
3天前
|
存储 C# 开发者
C#变量类型
C#变量类型
21 0
|
3天前
|
程序员 C#
C# 面向对象编程进阶:构造函数详解与访问修饰符应用
构造函数是一种特殊的方法,用于初始化对象。构造函数的优势在于,在创建类的对象时调用它。它可以用于为字段设置初始值
47 1
|
3天前
|
开发框架 .NET C#
C# 10.0中的扩展属性与模式匹配:深入解析
【1月更文挑战第20天】C# 10.0引入了众多新特性,其中扩展属性与模式匹配的结合为开发者提供了更强大、更灵活的类型检查和代码分支能力。通过这一特性,开发者可以在不修改原始类的情况下,为其添加新的行为,并在模式匹配中利用这些扩展属性进行更精细的控制。本文将详细探讨C# 10.0中扩展属性与模式匹配的工作原理、使用场景以及最佳实践,帮助读者更好地理解和应用这一新功能。
|
3天前
|
运维 编译器 C#
C# 9.0中的本地函数属性:深化函数级别的控制
【1月更文挑战第17天】C# 9.0引入了本地函数属性的概念,允许开发者在本地函数上应用属性,从而进一步细化对函数行为的控制。这一新特性不仅增强了代码的可读性和可维护性,还为函数级别的编程提供了更多的灵活性。本文将探讨C# 9.0中本地函数属性的用法、优势以及可能的应用场景,帮助读者更好地理解并应用这一新功能。