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属性,则排除相关命名空间),当然,也可以实现第一种方式的所有功能,但这种应用相当少见

相关文章
|
4月前
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
95 5
|
21天前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
|
4月前
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
184 18
|
4月前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
143 12
|
4月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
|
4月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
|
4月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
|
4月前
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
106 1
|
4月前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
179 5
|
4月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
200 13

相关实验场景

更多