前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CA1050:在命名空间中声明类型

CA1050:在命名空间中声明类型

作者头像
呆呆
发布2022-01-10 09:24:20
4380
发布2022-01-10 09:24:20
举报
文章被收录于专栏:centosDai

规则 ID

CA1050

类别

设计

修复是中断修复还是非中断修复

重大

原因

在命名的命名称空间范围之外定义公共类型或受保护类型。

规则说明

应在命名空间内声明类型以避免名称冲突,并作为一种在对象层次结构中组织相关类型的方式。 任何命名的命名称空间之外的类型均位于无法在代码中引用的全局命名空间中。

如何解决冲突

若要修复与此规则的冲突,请将类型置于命名空间中。

何时禁止显示警告

虽然根本不必禁止显示此规则中的警告,但当程序集绝不会与其他组件一起使用时,可以禁止显示。

抑制警告

可以通过多种方式来禁止显示代码分析警告,包括禁用项目的规则、使用预处理器指令为特定代码行禁用该规则或应用 SuppressMessageAttribute 特性。 有关详细信息,请参阅如何禁止显示代码分析警告。

示例 1

以下示例显示在命名空间外错误声明类型的库,以及在名称空间中声明同一名称的类型。

// Violates rule: DeclareTypesInNamespaces.

using System;

public class Test

{

public override string ToString()

{

return "Test does not live in a namespace!";

}

}

namespace ca1050

{

public class Test

{

public override string ToString()

{

return "Test lives in a namespace!";

}

}

}

' Violates rule: DeclareTypesInNamespaces.

Public Class Test

Public Overrides Function ToString() As String

Return "Test does not live in a namespace!"

End Function

End Class

Namespace ca1050

Public Class Test

Public Overrides Function ToString() As String

Return "Test lives in a namespace!"

End Function

End Class

End Namespace

示例 2

以下应用程序使用之前定义的库。 当命名空间未限定名称 Test 时,将创建命名空间之外声明的类型。 若要访问在命名空间内声明的 Test 类型,需要命名空间名称。

public class MainHolder

{

public static void Main1050()

{

Test t1 = new Test();

Console.WriteLine(t1.ToString());

ca1050.Test t2 = new ca1050.Test();

Console.WriteLine(t2.ToString());

}

}

Public Class MainHolder

Public Shared Sub Main1050()

Dim t1 As New Test()

Console.WriteLine(t1.ToString())

Dim t2 As New ca1050.Test()

Console.WriteLine(t2.ToString())

End Sub

End Class

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档