ASP.NET Core高级编程--C#基本特性(一)

简介: 本文章简略介绍C#的部分特性

C#的基本特性(一)

本文不介绍C#的一些基本语法,C#的基本语法和C,C++等系列语言非常类似,读者如果有上述语言基础很容易入门C#语言,所以本部分的系列文章主要是介绍一些C#中具有而其他语言很少具有的特性。
笔者比较喜欢tanenbaum教授的写作风格,所以笔者写作也会为引出一个新的特性,会先介绍在没有出现这个新特性的时候的相关情况,然后引入这个特性的优点,所以文章可能会比较长,读者可以根据需要来阅读有用的部分。

全局using和隐式using

这个特性是C# 10引入的新特性,用于解决多次引入常用命名空间的问题。为了描述这个特性的作用,我们先来看在没有全局using或隐式using的时候的问题(或者说是不方便的地方),当然在其他语言当中也或多或少也会存在这样的问题(比如Java):
每个程序都不免使用输出的功能,而输出的功能定义在System命名空间下,这个样就会出现下面的情况:

using System;

namespace test;

class Student
{
   
    public void Study()
    {
   
        Console.WriteLine("Study");
    }
}
using System;

class Teacher
{
   
    public void Say()
    {
   
        Console.WriteLine("i am a teacher");
    }
}

我们可以发现,类似于输出这样的常用功能所在的命名空间在每个文件里边都使用了一次,而如果需要使用大量的此类常用的命名空间,显然代码的可读性是非常低的(读者可以想象一下一个源代码文件的开头出现大量的using是什么感觉),为此C#推出了一个特性,叫做global usings,这个特性可以将常见的命名空间汇总到一个cs文件当中,在整个项目的范围里便不需要再次声明这些命名空间
可以改变如下:
在一个cs文件中添加如下代码即可:

global using System;

这样在其他的文件当中便可以把对System命名空间的using去掉,以增加代码的可读性,当然,除了System命名空间,读者还可以根据自己项目的需要,将对常用的命名空间的引用汇总到一个cs文件当中(笔者的习惯是把这个cs文件命名为GlobalUsings.cs)
除了这个特性之外,还有另外一种方式可以实现类似功能,导入由创建项目的类型决定的一些命名空间,就是使用implicit usings配置项,这个配置项是在.net 6中默认启用的,手动启用方式如下:
在csproj文件的PropertyGroup元素内添加子元素:

<ImplicitUsings>enable</ImplicitUsings>

当然,也可以禁用掉这个配置项目,只需要将这个元素的值改为disable即可,如果起用了这个配置项,会根据创建的项目类型自动导入一些命名空间,比如,如果创建了一个web项目,则会默认引入如下命名空间:

System.Net.Http.Json
Microsoft.AspNetCore.Builder
Microsoft.AspNetCore.Hosting
Microsoft.AspNetCore.Http
Microsoft.AspNetCore.Routing
Microsoft.Extensions.Configuration
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Hosting
Microsoft.Extensions.Logging

还有一种方式,就是使用Using标记,使用方式如下:
在csproj文件中Project根元素下配置如下元素即可:

  <ItemGroup>
    <Using Include="test"/>
    <Using Include="System"/>
  </ItemGroup>

作为以上两种方式的补充,主要可以实现对第二种方式的“微调”(可以通过修改Using元素的属性来实现,如果使用Include属性,则包含命名空间,如果使用Exclude属性,则排除相关命名空间),当然,也可以实现第一种方式的所有功能,但这种应用相当少见

相关文章
|
1月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
18天前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
28 1
|
28天前
|
存储 编译器
.Net特性Attribute的高级使用
【10月更文挑战第14天】在.NET中,特性(Attribute)是一种强大的机制,用于在代码中添加元数据。本文介绍了特性的高级用法,包括自定义特性、通过反射读取特性、条件编译与特性结合、多个特性应用以及特性继承。通过示例展示了如何创建自定义特性类、应用自定义特性,并通过反射获取特性信息。此外,还介绍了如何利用条件编译符号实现不同版本的代码控制,以及如何在一个代码元素上应用多个特性。最后,探讨了如何通过`AttributeUsage`控制特性的继承行为。
|
2月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
2月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
87 3
|
24天前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
38 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
53 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
46 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?