标签: using

在C#中维护使用指令的"干净"列表有什么好处?

我知道VS2008具有删除和排序功能,可以使用指令清理,Resharper也是如此.除了你的代码"干净"并消除了引用未来可能不存在的命名空间的问题,维护一个"干净"的使用指令列表有什么好处?

更少的代码?编译时间更快?

c# resharper using visual-studio

13
推荐指数
4
解决办法
1070
查看次数

什么是C#"使用"指令?

我在代码示例中看到了这个C#using语句:

using StringFormat=System.Drawing.StringFormat;
Run Code Online (Sandbox Code Playgroud)

那是什么意思?

c# using using-directives

13
推荐指数
3
解决办法
9504
查看次数

LINQ如何在using语句中延迟执行

想象一下,我有以下几点:

private IEnumerable MyFunc(parameter a)
{
   using(MyDataContext dc = new MyDataContext)
   {
      return dc.tablename.Select(row => row.parameter == a);
   }
}

private void UsingFunc()
{
   var result = MyFunc(new a());

   foreach(var row in result)
   {
      //Do something
   }
}
Run Code Online (Sandbox Code Playgroud)

根据文档,linq执行将推迟直到我实际枚举结果,该结果发生在foreach的行中.但是,using语句应强制在MyFunct()调用结束时可靠地收集对象.

实际发生了什么,处理器何时运行和/或结果运行?

我唯一能想到的是延迟执行是在编译时计算的,所以编译器将实际调用移动到foreach的第一行,导致使用正确执行,但直到foreach行才运行?那里有一位可以提供帮助的大师吗?

编辑:注意:此代码确实有效,我只是不明白如何.

我做了一些阅读,我在我的代码中意识到我调用了ToList()扩展方法,当然这个方法枚举了结果.对于回答的实际问题,勾选答案的行为完全正确.

对不起任何困惑.

.net c# linq idisposable using

12
推荐指数
2
解决办法
2409
查看次数

使用"使用"语句C#感到困惑

根据MSDN Library

using Statement (C# Reference)
Defines a scope, outside of which an object or objects will be disposed.

但我得到了一些用户在这里发布的代码,我对此感到困惑:(请参阅我对代码的评论)

using (OleDBConnection connection = new OleDBConnection(connectiongString))
           {
                if (connection.State != ConnectionState.Open)
                    connection.Open();
                string sql = "INSERT INTO Student (Id, Name) VALUES (@idParameter, @nameParameter)";

                using (OleDBCommand command = connection.CreateCommand())
                {
                    command.CommandText = sql;
                    command.CommandType = CommandType.Text;

                    OleDBParameter idParameter = command.CreateParameter();
                    idParameter.DbType = System.Int32;
                    idParameter.Direction = Parameterdirection.Input;
                    idParameter.Name = "@idParameter";
                    idParameter.Value = studentId; 

                    OleDBParameter nameParameter = command.CreateParameter();
                    try
                    {
                        command.ExecuteNonQuery();
                    } …
Run Code Online (Sandbox Code Playgroud)

c# named-scope using

12
推荐指数
2
解决办法
366
查看次数

将MemoryStream作为ActionResult返回时,它是否会被自动处理?

public ActionResult CustomChart(int reportID)
{
    Chart chart = new Chart();

    // Save the chart to a MemoryStream
    var imgStream = new MemoryStream();
    chart.SaveImage(imgStream);
    imgStream.Seek(0, SeekOrigin.Begin);

    // Return the contents of the Stream to the client
    return File(imgStream, "image/png");
}
Run Code Online (Sandbox Code Playgroud)

我习惯于将"using"语句与MemoryStreams结合使用.这是不是必须使用'使用'语句的情况吗?或者在'using'语句中调用return是否有效?

编辑:

出于我的目的,我发现引入'using'语句不起作用(抛出ObjectDisposedException).这是我在客户端做的事情:

$('#ReportTest').bind('load', function () {
                        $('#LoadingPanel').hide();
                        $(this).unbind('load');
                    }).bind('error', function () {
                        $('#LoadingPanel').hide();
                        $(this).unbind('error');
                    }).attr('src', '../../Chart/CustomChart?ReportID=' + settings.id);
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc jquery memorystream using

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

使用"std"的标准惯例

完全重复: 您更喜欢C++中的显式名称空间还是"使用"?

以下哪一项是使用任何命名空间的首选约定?

using namespace std;
Run Code Online (Sandbox Code Playgroud)

要么

using std::cin;
using std::cout;
Run Code Online (Sandbox Code Playgroud)

要么

在代码中需要时调用函数?

std::cout<<"Hello World!"<<std::endl;
Run Code Online (Sandbox Code Playgroud)

c++ using

11
推荐指数
3
解决办法
1128
查看次数

是否在using语句未定义的行为中修改值类型?

这个问题真的是这个问题的一个分支,但我认为它应该得到自己的答案.

根据ECMA-334第15.13节(关于using声明,以下称为资源获取):

资源获取中声明的局部变量 是只读的,并且应包括初始化器.如果嵌入语句试图修改这些局部变量(通过赋值或发生编译时间错误++--操作员)或它们传递作为refout 参数.

这似乎解释了为什么下面的代码是非法的.

struct Mutable : IDisposable
{
    public int Field;
    public void SetField(int value) { Field = value; }
    public void Dispose() { }
}

using (var m = new Mutable())
{
    // This results in a compiler error.
    m.Field = 10;
}
Run Code Online (Sandbox Code Playgroud)

但是这个怎么样?

using (var e = new Mutable())
{
    // This is doing exactly the same thing, but …
Run Code Online (Sandbox Code Playgroud)

c# struct specifications using mutable

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

跨多个文件在C#中定义类型别名

在C++中,可以很容易地写出以下内容:

#ifdef FAST
typedef Real float;
#endif

#ifdef SLOW
typedef Real double;
#endif

#ifdef SLOWER
typedef Real quad;
#endif
Run Code Online (Sandbox Code Playgroud)

在一些常见的头文件中,所以我可以简单地编写一个版本的代码和#define相应的版本来获得不同的二进制文件.

我知道在C#中你可以做类似的事情:

using Real = double;
Run Code Online (Sandbox Code Playgroud)

这样你就可以获得类似于typedef的语义.但有可能做一些类似于上面的C++代码,我不必在每个文件中写入?

c# typedef using

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

将在"using"语句中内联创建的所有对象都将被处理掉吗?

这可以在其他地方回答,但在做了一些搜索之后,我在正常using情境之外的主题上找不到太多.

我很好奇,如果块中创建的所有对象using都将与原始对象一样处理掉.

以下是上下文:

通常我会做这样的事情:

using (var conn = new SqlConnection(connectionString))
using (var cmd = new SqlCommand(commandText, conn))
{
    //Do everything I need to here
}
Run Code Online (Sandbox Code Playgroud)

我知道,无论conncmd走出去的范围在这一点上,因为可爱的设置的using关键字.

我很好奇相同的处理规则是否适用于以下声明:

using (var cmd = new (SqlCommand(commandText, new SqlConnection(ConnectionString)))
{
   //Do everything I need here
}
Run Code Online (Sandbox Code Playgroud)

当超出范围并且因为它与对象相关联而被处置掉的时候SqlConnection,在using法规中内联创建的对象是否会被处理cmd掉?

哪个在语法上更受欢迎?我个人认为第二个更干净,但我知道可读性也可以在这里发挥作用.

c# dispose using

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

在 C++ 中使用“using”公开私有基类名称

D在某些结构两次继承另一个结构的情况下A:一次是私有的 via B,第二次是公开的 via C,是否允许using B::A写入D

struct A {};
class B : A {};
struct C : A {};
struct D : B, C { 
    using B::A;  //ok in GCC, error in Clang
};
Run Code Online (Sandbox Code Playgroud)

该程序被 GCC 接受,但 Clang 打印错误:

error: 'A' is a private member of 'A'
Run Code Online (Sandbox Code Playgroud)

演示: https: //gcc.godbolt.org/z/5jeqrzorE

using B::A必须只暴露注入的类AD。一方面,A它已经可以在 in 中使用D(因此 GCC 接受它),但另一方面它A是私有的B(因此 Clang 拒绝它)。这里是哪一个编译器?

c++ inheritance using private language-lawyer

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