关于std命名空间使用'using'似乎有不同的看法.
有人说使用' using namespace std',其他人说不要,而是先加上与' std::' 一起使用的std函数,而其他人则说使用这样的东西:
using std::string;
using std::cout;
using std::cin;
using std::endl;
using std::vector;
Run Code Online (Sandbox Code Playgroud)
对于要使用的所有std函数.
各自的优点和缺点是什么?
Pascal的一个特性我发现非常有用的是命名数据类型的能力,例如
type
person: record
name: string;
age: int;
end;
var
me: person;
you: person;
etc
Run Code Online (Sandbox Code Playgroud)
你能用C#做类似的事吗?我希望能够做类似的事情
using complexList = List<Tuple<int,string,int>>;
complexList peopleList;
anotherList otherList;
Run Code Online (Sandbox Code Playgroud)
因此,如果我必须更改数据类型的定义,我可以在一个地方完成.
C#是否支持实现此目的的方法?
在编写了大量代码之后 - 我终于开始意识到将CA和StyleCop添加到我的解决方案中.
默认情况下,我的解决方案中的所有文件(很多文件)都在命名空间之前的文件顶部使用了语句.
我在visual studio中有resharper 6.0和powertools.有没有办法使用这些或任何其他工具来遍历解决方案中的所有CS文件,并将using语句放在每个文件的命名空间中.
我使用StyleCop已经有一段时间了(我已经习惯了).我的朋友建议我也尝试CodeMaid.我注意到的第一件事是使用组织的差异.
Stylecop按字母顺序使用订单,其中首先列出系统使用,下面列出非系统使用.
CodeMaid也按字母顺序命令使用,但它不首先命令系统使用.它只按字母顺序排序
我遇到的另一件事是CodeMaid允许你在命名空间之外使用(据我所知,最好将所有使用放在命名空间内)
我想问一下使用的正确顺序是什么,最终为什么?
Visual Studio(或Resharper)中是否有一个设置允许您指定哪些命名空间应该是默认的以及它们放在哪个范围内?
例如,MVC项目的默认值是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Namespace
{
public class Class1
{
}
}
Run Code Online (Sandbox Code Playgroud)
但Resharper和Stylecop抱怨说:
所有using指令必须放在命名空间内.[StyleCop规则:SA1200]
代码不需要使用指令,可以安全地删除
有没有办法简单地制作默认值:
namespace Namespace
{
public class Class1
{
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
应该在命名空间内部或外部使用
有什么区别
namespace x
{
using y;
}
Run Code Online (Sandbox Code Playgroud)
和
using y;
namespace x
{
}
Run Code Online (Sandbox Code Playgroud)
?
我已经开始使用 Visual Studio 2022 Preview 几天了。
我第一次震惊,没有 Startup.cs。没关系,稍微阅读一下,我知道启动已被删除。
今天又挨了一巴掌。我没有看到任何 using 语句。这里是。
我刚刚创建了一个全新的 .NET 6 Web 应用程序,当我将鼠标悬停在 WebApplication 类上时,我意识到它位于 Microsoft.AspNetCore.Builder 命名空间中。生成的 Program.cs 类如下所示。
那么using Microsoft.AspNetCore.Builder;声明在哪里呢?
有什么魔力?为什么.net 日益变得神秘?
完整的 Program.cs 文件如下。
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting(); …Run Code Online (Sandbox Code Playgroud) 在以下代码中,如果取消注释“using static”行,查询将不会并行运行。为什么?
(Visual Studio 社区 2019,.Net Core 3.1 / .Net 4.8)
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;
namespace UsingStatic_Mystery
{
//using static Enumerable;
class Program
{
static void Main(string[] args)
{
var w = new Stopwatch();
iter:
w.Start();
var xx = Enumerable.Range(0, 10)
.AsParallel()
.OrderByDescending(x => {
Thread.Sleep(new Random().Next(100));
Console.WriteLine(x);
return x;
}).ToArray();
w.Stop();
Console.WriteLine();
foreach (var x in xx) Console.WriteLine(x);
Console.WriteLine(w.ElapsedMilliseconds);
Console.ReadLine();
w.Reset();
goto iter;
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出,未注释/注释:
我注意到很多东西来回的一件事是将使用语句放在C#代码文件中 - 无论是在最外层还是在命名空间内.我理解using语句的位置会影响该文件中引用的范围,但我不明白的是,在大多数情况下,有人会想要在其命名空间中使用它们的using语句.
在几乎所有情况下,单个文件中只存在一个名称空间声明,因此使用using语句的范围似乎/(是?)无效.如果一个人在同一个文件中放置了多个类型和多个命名空间,那么使用语句进行范围化就很有意义了,但即使在具有一个命名空间的文件中,我仍然会看到很多这种情况.为什么?
using System;
namespace MyNamespace
{
using System.Text;
public class MyClass {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
在整个项目中,看似不必要的一个例子是ASP.NET MVC源代码.