C#:接口和命名空间(Interface和NameSpace 转载15)
总体感觉:与JAVA差别不大,只有方法的定义,可以继承。命令空间类似于JAVA中package
原文:https://www.runoob.com/csharp/csharp-interface.html
using System; interface IMyInterface { // 接口成员 void MethodToImplement(); } class InterfaceImplementer : IMyInterface { static void Main() { InterfaceImplementer iImp = new InterfaceImplementer(); iImp.MethodToImplement(); } public void MethodToImplement() { Console.WriteLine("MethodToImplement() called."); } }
using System; interface IParentInterface { void ParentInterfaceMethod(); } interface IMyInterface : IParentInterface { void MethodToImplement(); } class InterfaceImplementer : IMyInterface { static void Main() { InterfaceImplementer iImp = new InterfaceImplementer(); iImp.MethodToImplement(); iImp.ParentInterfaceMethod(); } public void MethodToImplement() { Console.WriteLine("MethodToImplement() called."); } public void ParentInterfaceMethod() { Console.WriteLine("ParentInterfaceMethod() called."); } }
原文:https://www.runoob.com/csharp/csharp-namespace.html
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。
我们举一个计算机系统中的例子,一个文件夹(目录)中可以包含多个文件夹,每个文件夹中不能有相同的文件名,但不同文件夹中的文件可以重名。
定义命名空间
命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示:
{
// 代码声明
}
为了调用支持命名空间版本的函数或变量,会把命名空间的名称置于前面,如下所示:
namespace_name.item_name;
下面的程序演示了命名空间的用法:
实例
using System; namespace first_space { class namespace_cl { public void func() { Console.WriteLine("Inside first_space"); } } } namespace second_space { class namespace_cl { public void func() { Console.WriteLine("Inside second_space"); } } } class TestClass { static void Main(string[] args) { first_space.namespace_cl fc = new first_space.namespace_cl(); second_space.namespace_cl sc = new second_space.namespace_cl(); fc.func(); sc.func(); Console.ReadKey(); } }
当上面的代码被编译和执行时,它会产生下列结果:
Inside first_space Inside second_space
using 关键字
using 关键字表明程序使用的是给定命名空间中的名称。例如,我们在程序中使用 System 命名空间,其中定义了类 Console。我们可以只写:
Console.WriteLine ("Hello there");
我们可以写完全限定名称,如下:
System.Console.WriteLine("Hello there");
您也可以使用 using 命名空间指令,这样在使用的时候就不用在前面加上命名空间名称。该指令告诉编译器随后的代码使用了指定命名空间中的名称。下面的代码演示了命名空间的应用。
让我们使用 using 指定重写上面的实例:
实例
using System; using first_space; using second_space; namespace first_space { class abc { public void func() { Console.WriteLine("Inside first_space"); } } } namespace second_space { class efg { public void func() { Console.WriteLine("Inside second_space"); } } } class TestClass { static void Main(string[] args) { abc fc = new abc(); efg sc = new efg(); fc.func(); sc.func(); Console.ReadKey(); } }
当上面的代码被编译和执行时,它会产生下列结果:
Inside first_space Inside second_space
嵌套命名空间
命名空间可以被嵌套,即您可以在一个命名空间内定义另一个命名空间,如下所示:
namespace namespace_name1 { // 代码声明 namespace namespace_name2 { // 代码声明 } }
您可以使用点(.)运算符访问嵌套的命名空间的成员,如下所示:
实例
using System; using SomeNameSpace; using SomeNameSpace.Nested; namespace SomeNameSpace { public class MyClass { static void Main() { Console.WriteLine("In SomeNameSpace"); Nested.NestedNameSpaceClass.SayHello(); } } // 内嵌命名空间 namespace Nested { public class NestedNameSpaceClass { public static void SayHello() { Console.WriteLine("In Nested"); } } } }
当上面的代码被编译和执行时,它会产生下列结果:
In SomeNameSpace In Nested
using的用法:
1. using指令:引入命名空间
这是最常见的用法,例如:
using System; using Namespace1.SubNameSpace;
2. using static 指令:静态引入(同JAVA)
using static System.Math;var = PI; // 直接使用System.Math.PI
3. 起别名
using Project = PC.MyCompany.Project;
4. using语句:将实例与代码绑定
using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) { // Use font3 and font4. }
代码段结束时,自动调用font3和font4的Dispose方法,释放实例。
例如一个 firstNameSpace.function.method() 和一个 secondNameSpace.function.method(),在写了 using firstNameSpace 和 using secondNameSpace 之后,简写都是 function.method(), 则报错 "function" 是 "firstNameSpace.function"和"secondNameSpace.function" 之间的不明确的引用。
相关文章
- c# 获取url参数值
- C#引用C++开发的DLL
- TestNG like unit testing framework in C# (C sharp)
- pattern matching is C# 7.0
- 详解C#泛型(二) 获取C#中方法的执行时间及其代码注入 详解C#泛型(一) 详解C#委托和事件(二) 详解C#特性和反射(四) 记一次.net core调用SOAP接口遇到的问题 C# WebRequest.Create 锚点“#”字符问题 根据内容来产生一个二维码
- SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
- ABP框架 - 介绍 VS2017调试器无法附加到IIS进程(w3wp.exe) c# 动态实例化一个泛型类
- Word控件Spire.Doc 【文本】教程(15) ;如何在 C#、VB.NET 的组合框中添加、选择和删除项目
- C#学习记录——.NET Framework的组成及C#程序的执行过程
- C#学习记录——接口
- 【C#】抽象方法、接口、虚方法
- c# HttpClient的HTTP/2支持
- C#,单词查找树(Trie Tree)的插入与搜索算法与源代码
- C#,机器学习的KNN(K Nearest Neighbour)算法与源代码
- C# - JSON操作
- C# 获取进程或线程的信息
- 在C#中实现Socket端口复用
- C#中的继承与多态还有接口
- c#的接口详解
- C# 浅谈 接口(Interface)的作用
- C# DataTable映射成Entity
- C#接口显示成员用法
- C#捕获windows关机事件,在系统关机前做一些自己想做的事
- C#的值类型和引用类型
- c#访问http接口的"编码"问题
- C# 中的接口和密封类
- C# 发送HTTP请求(可加入Cookies)
- C# CodeFirst(EF框架)代码优先创建数据库
- C# 网络编程之webBrowser乱码问题及解决知识
- 接口 C# 请求数据 使用post的方式提交raw格式的数据,数据为json格式,多层嵌套