雪千渔Blog

  • 首页
  • Coding
    • dotNet
    • C++
    • Lua
    • Visual Basic
    • Java
    • Android
    • Web
  • DCC
    • Maya
    • Maya-Plug
    • AfterEffect
    • AfterEffect-Plug
    • PhotoShop-Plug
  • GameDev
    • Unity3D
    • UnrealEngine
    • 经验杂谈
    • 游戏设计
    • 自研引擎
    • 效果实现
  • Graphics
    • OpenGL
    • Vulkan
    • 计算机图形学
  • 其他
    • 乱七八糟
    • 软件工具
    • 留言板
    • 自制素材
    • 关于我
雪千渔blog
唯有热爱,能抵漫长岁月
  1. 首页
  2. Coding
  3. dotNet
  4. 正文

C# using引用别名的使用方式

2019年12月5日 12175点热度 14人点赞 0条评论

Contents

不引入即可使用

using的三种用法其一就是创建别名,给静态类创建别名,例

using File = System.IO.File;

这样即使不引入System.IO命名空间,也不用输入System.IO.File的全名,可以直接使用File调用。

解决二义性

可以用别名来覆盖当前文档中的类型,例如进行Unity开发的时候可能会出现System.Object和UnityEngine.Object冲突的情况,这时就可以使用using来制定默认的Object是哪个命名空间下的。

using Object = UnityEngine.Object;

这样就不会出现二义性的报错了。

缩短类名

using可以缩短类名,比如你的一些项目中的某些类中有嵌套类:

public class Parent
{
    public class Child
    {

    }
}

那么Child的类型就是Parent.Child,而Parent又不是命名空间,无法使用using来导入,这个时候就可以用using给这个类起个别名,同时对静态类也有效。
using Child = Parent.Child;

此处需要注意,using引用别名是类的完整路径,需要从根路径开写,所以如果在命名空间内则需要把命名空间的路径都加上去。

给类型起个别名

比如说int代表着一个整数型,windows的句柄也是以整数的方式存在的,windows的消息也都是整数的方式存在的,如果在操作windows时声明一个int,你不知道这个整数代表着什么意义,所以要用其他的类型名来让代码更可读,即使他们是同一个类型的。

using HWND = System.Int32;
//...
HWND hWnd = 0;

在C#写windows相关操作类库时经常需要句柄,就可以使用这种方式使代码更可读。(举个例子,不讨论IntPtr)

优点:类起别名更方便,不用写个新类就可以用有意义的名字给类型重新命名。

缺点:using范围问题,只能在当前文档中生效,在其他文档中调用时智能提示显示的是其他文档的别名状态、在当前文档中智能提示会拿别名覆盖原类名。

给泛型类起别名

在使用泛型容器时声明和赋值都比较麻烦,要写的很长,如果要和其他方法传参,之后还修改了类型的话,后续的修改更是麻烦。

Dictionary<int, string> data = new Dictionary<int, string>();

可以用using来解决这个问题。
using Data = System.Collections.Generic.Dictionary<int, string>;

直接使用
Data data = new Data();

但是using问题同上有作用范围,只能在当前文档中生效。

使用对泛型的继承可以解决using作用范围的问题,但是这样就会新增加一个类。

public class Data : Dictionary<int, string> { }

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: C# using 别名
最后更新:2021年4月18日

JomiXedYu

独游开发者 & 技术美术

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

JomiXedYu

独游开发者 & 技术美术

最新 热点 随机
最新 热点 随机
HLSL对Vulkan的适应性以及伪语义绑定 GPU呈现模式与垂直空白 自研引擎PulsarEngine的Shader编译流程 UE材质Custom节点与HLSL的HACK操作 UE5出现D3D12崩溃报错解决方案 游戏引擎脚本绑定的三种写法与利弊
HLSL对Vulkan的适应性以及伪语义绑定
Aria2+AriaNG搭建远程下载服务器 修改UnityPlayer.dll的名字 ChestCommands快速填充工具支持3.1_QuickInputChestCommandsV2.0 DEMO Visual Basic6 网游登录器样式窗体 Adobe Prelude,Pr,AE影视合成/剪辑更有效率的制作 gitbook两个bug解决方法与修复工具
友情链接
  • DorinXL
  • 小博博客
  • 秋橘斋

COPYRIGHT © 2014-2023 雪千渔Blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

辽ICP备20006894号-1