热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#using与添加引用的关系

添加引用是using的必备条件只有添加了对程序集的引用,此程序集内的命名空间才能被using项目添加引用的目的是引入程序集程序集的概念是什么?程序集是一

添加引用是using的必备条件 

只有添加了对程序集的引用,此程序集内的命名空间才能被using

项目添加引用的目的是引入程序集  
程序集的概念是什么?  
程序集是一个 DLL,这是调用其中类的必备条件  
一个程序集包括一个或多个命名空间  
举例来说  
命名空间 System.Data 来自文件System.Data.DLL 

命名空间System.Data.SqlClient
同样来自System.Data.DLL 

那么意味着你一旦添加了 System.Data 程序集 文件的引用(无论你是从 GAC 添加还是直接添加的 DLL 到项目)  
你就可以使用 System.Data 和 System.Data.SqlClient 下的各种类 

为什么要 using 呢?  
简单地说,你甚至可以不用写一个 using,凡是需要用到类型的地方用完全限定名。 

什么是完全限定名?  
比如数据集类 DataSet:System.Data.DataSet 就是它的完全限定名。  
比如数据库连接类 SqlConnection:System.Data.SqlClient.SqlConnection 就是它的完全限定名。 

用了 using 的好处在于:你不必处处写完全限定名,这样会使代码看起来过于冗长。  
说到这里,using 的作用明白了吗?其实就是起到了简写的作用。  
真正的引用工作是一开始做的,using 只是为了使你的后续编码工作简单而易。 

至于你提到的需要 using 才能用,  
说到底就是因为你正在使用的类写了不完整的类名称(即非完全限定名),  
系统不知道这个类来自哪里,  
系统会在所有的 using 下去找到这个类的出处,  
如果没有 using,自然找不到。 

最后举个例: 

你需要定义一个数据集, 

方法一  
using System.Data;  
然后  
DataSet mySet = new DataSet(); 

方法二:  
没有 using  
直接  
System.Data.DataSet mySet = new System.Data.DataSet(); 

当然,两种方法都要求你对项目添加了对 System.Data 的引用  
从实现上,这两种方式都是可行的,但是你是否觉得第一种更简洁 

自己实践一下!

1.system.io属于system下面的一个模块,所以引用中只有system,而没有单独的system.io
2.程序自动添加的引用是在.net框架的安装目录下调用的dll,所以程序集在安装了对应版本.net才能正常使用!

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1



推荐阅读
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文探讨了高质量C/C++编程的最佳实践,并详细分析了常见的内存错误及其解决方案。通过深入理解内存管理和故障排除技巧,开发者可以编写更健壮的程序。 ... [详细]
  • 本文探讨了使用C#在SQL Server和Access数据库中批量插入多条数据的性能差异。通过具体代码示例,详细分析了两种数据库的执行效率,并提供了优化建议。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
author-avatar
手机用户2602881147
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有