标签: using

为什么CS0246"无法找到类型或命名空间名称'名称'"C#错误如此令人困惑?

这是场景.我在Visual Studio中创建一个新的类库项目,添加一些类.然后在某些时候我决定我需要一些类来标记,System.Runtime.Serialization.DataContractAttribute我写下面的内容:

[DataContract]
public class MyDataContractClass {}
Run Code Online (Sandbox Code Playgroud)

当我点击编译时,我看到以下错误:

错误CS0246:找不到类型或命名空间名称"DataMember"(您是否缺少using指令或程序集引用?)

好的,问题是我忘了添加using指令以使类可见.我加

using System.Runtime.Serialization;
Run Code Online (Sandbox Code Playgroud)

到类上面的同一个文件,但问题不会消失,直到我System.Runtime.Serialization在Project Explorer中添加引用.

这非常令人困惑.为什么我必须在不同的地方添加两次相同的东西并看到相同的错误消息,无论我错过了两个步骤

我的问题如下.这只是设计错误的错误诊断,还是有一些基本原因导致错过上述两个步骤中的任何一个导致C#编译器发出的相同错误?

.net c# using

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

如何使用'out'和'out'参数

我有一个像这样的方法

private bool VerbMethod(string httpVerb, string methodName, string url, string command, string guid, out HttpWebResponse response)
Run Code Online (Sandbox Code Playgroud)

我这样使用它

  HttpWebResponse response;
  if (VerbMethod("POST", "TheMethod", "http://theurl.com", "parameter1=a", theGuid, out response))
  {
    using (StreamReader sr = new StreamReader(response.GetResponseStream()))
    {
      string responseString = sr.ReadToEnd();
    }
Run Code Online (Sandbox Code Playgroud)

它返回一个bool来指定​​方法是否顺利,并在out参数中设置响应以获取数据.

我有时会超时,然后后续请求也会超时.我看到这个SO WebRequest.GetResponse锁定了吗?

它重新启动using关键字.问题是,用上面的方法签名我不知道该怎么做.

  • 我应该手动调用最终处理吗?
  • 有没有一些方法仍然使用usingout参数?
  • 重写方法,所以它不暴露HttpWebResponse

c# timeout using out httpwebresponse

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

在using语句中指定类名是什么做的?

鉴于以下内容:

namespace Foo{
class Bar{
    static const auto PRIVATE = 0;
    const int private_ = 1;
    void ptivateFunc() { cout << 2; }
public:
    static const auto PUBLIC = 3;
    const int public_ = 4;
    void publicFunc() { cout << 5; }
};
}
Run Code Online (Sandbox Code Playgroud)

该声明using Foo::Bar;编译......但我不确定它是什么让我访问.任何人都可以解释一下这个陈述的重点是什么以及它能让我获得什么,Bar而不仅仅是做一个using namespace Bar

c++ scope named-scope using class

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

C++:使用声明中的逗号分隔列表

为什么在 C++ 的 using 声明语句中使用逗号分隔列表是一种不好的做法?

例如

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

被认为比代码更好

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

如果代码包含逗号分隔的 using 声明列表,一些编译器(例如 gcc)甚至会发出警告。

当然,最好的做法是对标识符使用完全限定的名称。

c++ using using-declaration

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

将 MemoryStream 保存到文件会产生 0 字节

我正在使用此代码将 MP3 MemoryStream 写入文件:

using (var nSpeakStreamAsMp3 = new MemoryStream())
using (var nWavFileReader = new WaveFileReader(nSpeakStream))
using (var nMp3Writer = new LameMP3FileWriter(nSpeakStreamAsMp3, nWavFileReader.WaveFormat, LAMEPreset.STANDARD_FAST))
{
    nWavFileReader.CopyTo(nMp3Writer);

    string sPath = "C:\\inetpub\\wwwroot\\server\\bin\\mymp3.mp3";

    using (FileStream nFile = new FileStream(sPath, FileMode.Create, System.IO.FileAccess.Write))
    {
        nSpeakStreamAsMp3.CopyTo(nFile);
    }

    sRet = (String.Concat("data:audio/mpeg;base64,", Convert.ToBase64String(nSpeakStreamAsMp3.ToArray())));
}

return sRet;
Run Code Online (Sandbox Code Playgroud)

由于某种我没有看到的原因,这会生成一个 0 字节的文件。但是,MP3 流是有效的并且可以工作。我将其作为 Base64String 传递到网站,并且我确实听到了它。

这里可能错误在哪里?

c# memorystream using filestream

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

在给定一个 std::variant 类型的 C++ 中,是否可以添加其他类型来创建另一种变体类型?

#include <string>
#include <variant>

int main()
{
    using variant_base = std::variant< int, double >;

    using variant_derived_and_flattened = std::variant< std::string, variant_base >;
    // the above does not produce the desired
    // std::variant< int, double, std::string >
    static_assert( std::is_same< variant_base, variant_derived_and_flattened >{} );
}
Run Code Online (Sandbox Code Playgroud)

static_assert 失败。

我认为没有办法做到这一点,并希望对此进行确认,但也许有人知道如何做到这一点?

c++ using variant

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

c ++是否可以从实例访问别名(使用)

我有由模板设置的类型和大小的缓冲区。

我使用 a 存储类型using,并允许使用方法访问大小。

大小一切都很好。现在,我可以Buffer<char,6>::value_type val = 'z';从 Buffer 的实例访问类型(如 in line )吗?

我尝试了注释语法,但失败了:

//g++  5.4.0
#include <iostream>
using namespace std;

template<typename T, int N>
struct Buffer {
    using value_type = T;
    constexpr int size() { return N; }
    T tab [N];
    Buffer(T val) { for(int _i; _i<N ; _i++){ tab[_i]=val; } }
    void p(){ for(int _i; _i<N ; _i++){ cout << tab[_i] << " "; } }
};

int main()
{
    Buffer<char,6> b( 'x' ); …
Run Code Online (Sandbox Code Playgroud)

c++ using

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

将 C# 8.0 转换为 C# 7.0

我正要使用下面的 C# 代码。

await using (var producerClient = new EventHubProducerClient(ConnectionString, EventHubName))
{
    using EventDataBatch eventBatch = await producerClient.CreateBatchAsync();
    eventBatch.TryAdd(new EventData(Encoding.UTF8.GetBytes(eventData)));
    await producerClient.SendAsync(eventBatch);
}
Run Code Online (Sandbox Code Playgroud)

但是在构建服务器中这会失败,因为上面是 C# 8.0 代码并且构建服务器只支持 C# 7.0 代码。有人可以帮我将上面的代码从 C# 8.0 转换为 C# 7.0,因为我无法让它工作吗?

c# asynchronous using async-await c#-7.0

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

使用“typedef”或“using”来定义结构 - 哪个最好?

样本结构:

typedef struct tagExportSettings
{
    COLORREF    crHeading{};
    COLORREF    crEvenBack{};
    COLORREF    crOddBack{};
    COLORREF    crHighlight{};
    COLORREF    crDate{};
    COLORREF    crEvent{};
    COLORREF    crEmpty{};
    COLORREF    crNotes{};

} EXPORT_SETTINGS_S;
Run Code Online (Sandbox Code Playgroud)

视觉辅助 说:

typedef可以转换为using声明。

更改此代码有什么真正的好处吗?

我在软件中的所有代码都使用EXPORT_SETTINGS_S所以我不想破坏该语法。

c++ struct typedef using

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

声明类型别名时,“using”和“#define”之间有区别吗?

我知道使用预处理器指令来缩短与此类似的类型名称:

#define LL long long
Run Code Online (Sandbox Code Playgroud)

然而,我看到有人使用不同的方法:

using LL = long long;
Run Code Online (Sandbox Code Playgroud)

除了语法之外,这两者之间还有什么区别吗?在大多数情况下更推荐哪一种?

c++ preprocessor using

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