标签: using

如果使用"using"语句,是否需要在流或编写器上调用Flush()?

Flush()如果我写这样的东西,我不确定是否需要调用使用过的对象:

using (FileStream...)
using (CryptoStream...)
using (BinaryWriter...)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

它们总是自动刷新吗?什么时候该using声明冲洗它们,当它不(如果可能发生)?

c# using flush stream writer

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

在泛型中使用Statement:使用ISet <> = System.Collections.Generic.ISet <>

由于我使用两个不同的通用集合名称空间(System.Collections.GenericIesi.Collections.Generic),我有冲突.在项目的其他部分,我使用的是nunit和mstest框架,但是当我打电话时Assert我想要使​​用nunit版本

using Assert = NUnit.Framework.Assert;
Run Code Online (Sandbox Code Playgroud)

哪个效果很好,但我想用泛型类型做同样的事情.但是,以下行不起作用

using ISet = System.Collections.Generic.ISet;
using ISet<> = System.Collections.Generic.ISet<>;
Run Code Online (Sandbox Code Playgroud)

有谁知道如何告诉.net如何使用泛型的using语句?

c# generics syntax alias using

40
推荐指数
3
解决办法
6539
查看次数

使用块是否会关闭数据库连接?

using (DbConnection conn = new DbConnection())
{
    // do stuff with database
}
Run Code Online (Sandbox Code Playgroud)

请问using块调用conn.Close()

c# database using

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

使用语句FileStream和/或StreamReader - Visual Studio 2012警告

新的Visual Studio 2012抱怨我一直使用的常见代码组合.我知道这似乎有点矫枉过正,但我​​在我的代码中做了以下'只是为了确定'.

using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    using (var sr = new StreamReader(fs))
    {
        // Code here
    }
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio正警告我,我不止一次处理fs.所以我的问题是这样,写这个的正确方法是:

using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    var sr = new StreamReader(fs);
    // do stuff here
}
Run Code Online (Sandbox Code Playgroud)

或者我应该这样做(或者没有提到的其他变体).

var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

using (var sr = new StreamReader(fs))
{
    // Code here
}
Run Code Online (Sandbox Code Playgroud)

我在StackOverflow中搜索了几个问题,但没有找到直接解决此组合的最佳实践的问题.

谢谢!

.net c# dispose using visual-studio-2012

38
推荐指数
3
解决办法
6万
查看次数

为什么C++中的类型别名在语法中使用'using'而不是'typedef'?

显然,类型别名和模板化类型别名在语义上等同于typedef,并且是typedef的扩展,以支持模板.为什么using为这些创建了关键字的新语法,而不是使用typedef作为第一个和一些语法扩展的单词typedef.

注意:这不是"使用和typedef之间的区别"问题的克隆.我知道这样可以using定义一个typedefs 族.我要问的是,为什么标准人员决定使用此using关键字而不是typedef关键字.这似乎只会增加语言的混乱.

c++ templates typedef using c++11

36
推荐指数
2
解决办法
1万
查看次数

Using语句中的MemoryStream - 我是否需要调用close()

在using语句中使用内存流时,是否需要调用close?例如这里需要ms.Close()吗?

  using (MemoryStream ms = new MemoryStream(byteArray)) 
    {  
      // stuff 

      ms.Close(); 
    }
Run Code Online (Sandbox Code Playgroud)

c# memorystream using using-statement

35
推荐指数
2
解决办法
3万
查看次数

使用别名模板名称的模板化类型的不等价

我的目标是在使用模板模板参数定义其他类型时记录模板化类型的名称.我遇到的问题是结果类型被认为是不等价的.

为了实现这一点,我尝试使用模板化的"使用"别名来记录作为模板模板参数给出的名称.然后我引用别名来恢复名称.这有用的一个例子是当我有一个模板化函数,它返回一个带有需要推导出的模板模板参数的类型.

以下代码显示了我的方法:

include <type_traits>

template<typename X>
struct TT {};

template<template<typename> class T>
struct UU {
  template<typename X>
  using name = T<X>;
};

template<template<typename> class T>
struct VV {};

int main() {
  static_assert(std::is_same<
    TT<int>,
    UU<TT>::template name<int>
  >::value, "Templated type instances are distinct");
  static_assert(std::is_same<
    VV<TT>,
    VV<UU<TT>::template name>
  >::value, "Template type instances using template names are distinct");

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

编译如下:

c++ -std=c++14 Test.cpp -o Test
Run Code Online (Sandbox Code Playgroud)

产量:

Test.cpp:20:3: error: static_assert failed "Template type instances using template names are distinct"
Run Code Online (Sandbox Code Playgroud)

还有另一种录制和使用模板名称的方法吗?

有人可以指示我指定此行为的标准部分吗?

c++ templates using c++11 c++14

34
推荐指数
0
解决办法
1009
查看次数

手动销毁C#对象

我对学习C#(来自Java和C++背景)相当新,我对手动垃圾处理有疑问:是否有可能手动销毁C#中的对象?我知道IDisposable接口,但是假设我正在处理一个我没写过的类而且它没有实现它?它不会有一个.Dispose()方法,使和using { }超出,并且.Finalize始终为protected还是private这样,要么是不是一种选择.

(我只是想了解什么是可能在C#在这种情况下,我想,如果一切都失败了,我可以继承的假设ImNotDisposable类,以便它实现IDisposable.)

c# destructor idisposable using

33
推荐指数
5
解决办法
7万
查看次数

是否有可能强制使用"使用"一次性课程?

我需要强制使用"使用"来处理类的新实例.

public class MyClass : IDisposable
{
   ...
}

using(MyClass obj = new MyClass()) // Force to use "using"
{
}
Run Code Online (Sandbox Code Playgroud)

c# dispose idisposable using

33
推荐指数
6
解决办法
6111
查看次数

C++ 11:为什么私有成员模板可以在课外访问?

我碰巧发现可以使用using指令直接在封闭类之外访问嵌套的私有模板类:

class wrapper
{
private:
    template <typename T>
    class __tklass {};

    class __klass {};
};

template <typename T>
using tklass = wrapper::__tklass<T>;    // Expected error but compiles OK

// using klass = wrapper::__klass;      // "Error: __klass is private"

int main()
{
    tklass<int> v1;                     // Expected error but compiles OK

    // wrapper::__tklass<int> v3;       // "Error: __tklass is private"
    // wrapper::__klass v4;             // "Error: __klass is private"
}
Run Code Online (Sandbox Code Playgroud)

标记为"错误:__ xxxx为私有"的行在取消注释时正确报告错误.但是tklass编译的行没有编译器的任何抱怨.

那么,为什么编译器标记tklass为错误,尽管wrapper::__tklass它是私有的?是否有标准允许的任何机会?如果是这样,那不会被认为是严重的访问违规行为吗?

我试过gcc-4.9.2,clang-3.5.0和visual studio 2013 …

c++ templates using language-lawyer c++11

33
推荐指数
2
解决办法
1475
查看次数