C# 2.0 杂项技术,以及C#语言的未来发展

简介:

属性访问器保护级别的变化

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

class Customer
{
   private string name;
   ...
   public string Name
   {
      get{return this.name;}
      internal set(this.name=value;}
   }
   ...
}

一些注意点

属性访问器(get或set)上应用的访问修饰符必须“小于”属性上应用的访问修饰符;“小于”的意思即“更严格”,例如protected小于public。

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

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

属性访问器保护级别的变化规则完全适用于C#的索引器。

---------------------------------------------

名称空间别名限定符的引入

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

using SC = System.Collections;
using ZC = Zhucheng.Collections;
class Program
{
   static void main()
   {
       ZC::ArrayList list = new ZC::ArrayList();
       ...
   }
}

一些注意点

当使用命名空间别名限定符(::)时,如果ZC:ArrayList,编译器可以确保这是一个只适用于“名称空间别名”的限制符,不会辨析为其他类型、或者成员限定符(.)。

关键字global可以放在命名空间别名限定符(::)的左边,它使得编译器只去搜索那些所有的命名空间,而不会去搜索其他的类型、或成员。

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

---------------------------------------------

pragma指示符的引入

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

class program
{
   [Obsolete]
   static void Foo(){...}
   static void Main()
   {
      #pragma warning disable 612
      Foo();
      #pragma warning restore 612
   }
}

几个注意点

目前pragma指示符只支持#pragma warning

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

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

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

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

---------------------------------------------

Conditional特性类的引入

C# 2.0 允许我们使用Conditional特性类来告诉编译器根据“特定的预定义指示符条件”来在类上应用特性。

#define DEBUG
using System;
using System.Diagnostics;

[Conditional("DEBUG")]
public class TestAttribute : Attribute{}

[Test]
class MyClass{}

几个注意点

如果定义了条件指示符,如#define DEBUG,那么编译器将在MyClass类上应用TestAttribute特性。

如果没有定义条件指示符,如#undef DEBUG,MyClass类照样可以正常使用,但是其上将不在应用TestAttribute特性。

注意区别C# 2.0 中的Conditional特性类和C# 1.0中的Conditional特性方法。

定长buffer的引入

C# 2.0 引入定长来使得我们可以在结构里声明C风格的数组,从而更加方便地实现托管代码和非托管代码的互操作:

unsafe struct MyClass
{
   public fixed int x[5];
   public fixed int y[10];
   public fixed int z[100];
}

几个注意点

定长buffer只能使用在unsafe代码的上下文中,不可以在非unsafe的代码中使用。

使用定长buffer所定义的字段在结构类型的实例对象中将按照它们的声明顺序来进行内存布局。

注意区别unsafe代码中的定长buffer和我们通常使用的托管数组。

定长buffer主要应用在托管代码和非托管代码互操作的情况,除此之外,我们一般使用托管数组。

---------------------------------------------

C# 3.0 与未来发展

C# 2.0 的核心机制在于泛行编程的引入,它赋予了类型参数式多态的能力,将对今后的C#代码构造有重要影响。

研发中的C# 3.0 将XML、SQL两中数据处理技术引入到C#这样的强类型语言中,极大地丰富了C#语言的数据处理能力,是一个极具远见的创新。

C#语言的发展越来越多体现融合“设计模式+库”的思想,“语言的发展就是库的发展”。




本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/11/30/287638.html,如需转载请自行联系原作者

相关文章
|
14天前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
33 2
|
2月前
|
Web App开发 Linux C#
C# 网页截图全攻略:三种技术与 Chrome 路径查找指南
本文主要介绍了在 C# 中实现网页截图的几种技术及相关要点。涵盖了 PuppeteerSharp、Selenium 和 HtmlToImage 三种方式,分别阐述了它们的安装步骤及核心代码。同时,针对在 C# 中寻找 Windows 上 chrome.exe 路径这一问题,分析了未安装 Google Chrome 和已安装两种情况下的查找原因,并给出了相关参考链接,还列举了一系列与 C# 使用 Selenium、获取 chrome.exe 路径以及在 Linux 上部署相关的参考资料。
98 11
|
3月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
|
3月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
|
3月前
|
程序员 C# 数据库
C# 比较对象新思路,利用反射技术打造更灵活的比较工具
中途接手的项目,碰到需要在更新对象信息时比较并记录差异的需求,最变态的还有附加要求,怎么办?有没有既能满足需求又能对项目影响最小的方法呢?分享这个我封装的方法,一个利用反射技术打造的更灵活的比较工具
|
4月前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
6月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
5月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
66 1
|
4月前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
|
5月前
|
人工智能 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)