标签: global-namespace

如何在没有编码的情况下强制整个项目文件中的C#根命名空间?

我想在任何.cs源文件的内容上强制使用根命名空间,这些文件没有将其内容包装在显式中namespace.换句话说,我希望将类和其他命名空间级结构保留在默认命名空间之外.
(使用Visual Studio在Windows .NET环境中工作)

在下面的示例中,我希望默认情况下将Car类强制进入MotorIndustry命名空间,即使它没有明确的命名空间编码.

Vehicle.cs(有命名空间)

namespace MotorIndustry {
    public class Vehicle {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Car.cs(没有命名空间/默认)

public class Car : Vehicle {
    //...
}
Run Code Online (Sandbox Code Playgroud)

有没有办法通过Visual Studio,AssemblyInfo.cs文件或其他方式中的项目设置来完成这个"根命名空间"修改行为?

我的理解是VB.NET有这样的功能,但C#的行为有何不同?

关于为什么我这样问的一些背景:我有数百个类,程序员忘了将命名空间包装在一些.当我从其他项目引用程序集时,它会使用最终导致一些模糊情况的类来污染默认命名空间.

.net c# namespaces visual-studio global-namespace

4
推荐指数
2
解决办法
2711
查看次数

命名空间和自由函数

我有一个自由函数,foo在名称空间N中定义。的标头foo位于全局包含搜索路径中,因此任何人都可以通过包括来调用它foo.h

foo调用另一个本地自由函数foo1,该函数在中定义foo.cpp

// foo.h
namespace N
{
    void foo();
} 


// foo.cpp
#include "foo.h"

namespace
{
    // declare in the unnamed namespace?
    void foo1()
    {
        // do some stuff
    }
}

namespace N
{
    // declare in namespace N?
    void foo1()
    {
        // do some stuff
    }

    void foo()
    {
        foo1();
    }

} // N
Run Code Online (Sandbox Code Playgroud)

我应该放入foo1未命名的名称空间还是namespace N?还是没关系?

更新

我想将范围限制foo1foo.cpp

c++ namespaces global-namespace non-member-functions

3
推荐指数
1
解决办法
1523
查看次数

在 C++20 中,<tuple> 内的 get<>() 函数不再位于命名空间 std 中。为什么?

以下代码不能在 C++17 中编译,而是在 C++20 中编译:

#include <tuple>

int main() {

    auto t = std::make_tuple(1, 2);
    get<0>(t); // no std:: required!

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

由于这适用于 g++ 和 clang++ 以及两者-stdlib=libc++-stdlib=libstdc++甚至在 msvc 中/std:c++20,我想知道这是否是一个“功能”。这背后的理由是什么?除此之外还有对全局命名空间的更多污染吗?

c++ get global-namespace c++20

3
推荐指数
1
解决办法
110
查看次数

Ruby(/ rails?)顶级命名空间

我遇到以下情况:

我正在建立一个铁路站点.我有两个名为User的类.一个是ActiveRecord,另一个是我想用来播种我的数据库的自定义类.题:

我可以从名为User的自定义类中引用名为User的ActiveRecord类吗?

ruby namespaces ruby-on-rails global-namespace

1
推荐指数
1
解决办法
872
查看次数

Visual Studio 2022 文件范围的命名空间问题

所以我有 VS 2022 并且正在尝试学习 C#。

我收到功能错误

“文件范围的命名空间”在 C# 7.3 中不可用,请使用语言 10.0 或更高版本。

我发现可以转到“选项”>“代码样式”>“文本编辑器”并更改为“文件范围”。做过某事。

当我创建解决方案时,我选择了空白解决方案,然后使用 .NET Framework 4.8 添加了一个空项目,接下来我添加了一个代码文件最后我添加了以下内容:

namespace Averages;

public static class TestClass
{
 
}
Run Code Online (Sandbox Code Playgroud)

我得到了错误。我到底错过了什么?我很困惑。编辑:我刚刚检查过。我有.NET 7.0

c# visual-studio global-namespace

1
推荐指数
1
解决办法
1784
查看次数

我们应该教初学者使用全局命名空间吗?

注意:我自己几乎都是初学者.这个问题集中在C++的使用上,因为这是我遇到的唯一语言.

using namespace std;为C++提供的代码示例中使用Stack Overflow似乎已达成共识.我最初是以这种方式学习的,并且从未被教过为什么以后这是一个问题.

我只是想知道为什么人们在他们的示例代码中使用前缀std ::有问题.声明全局命名空间似乎是反复无常的,特别是因为许多提问者将示例中的代码复制+粘贴到他们的IDE中.命名空间是一个高级编程概念,但我认为最好为std ::添加前缀,然后在初学者询问时解释它.

为什么这种用法教会初学者是否可以接受?

c++ namespaces global-namespace

0
推荐指数
1
解决办法
476
查看次数

为什么大学计算机科学课程推广'使用命名空间标准'?

到目前为止,我已经在C++上学过两门课,每门课都在不同的学校,并且他们都使用了'using namespace std;' 教基础编程.这可能是巧合,但我不得不自己去找出这样做不好的做法.

c++ std global-namespace

0
推荐指数
1
解决办法
511
查看次数