小编Yip*_*Yay的帖子

C#中的Streams实现

我需要做些什么来实现我自己的流,它使用自定义压缩例程,例如,类似于GZipStream

我显然必须对类进行子Stream类化,但是我应该实现哪些方法以及哪些方法可以保留其默认实现?

基本上,文档有一个特殊的部分,但也许有更好更容易的选择?

对实施者的说明

实现Stream的派生类时,必须提供Read和Write方法的实现.异步方法BeginRead,EndRead,BeginWrite和EndWrite是通过同步方法Read和Write实现的.同样,您的Read和Write实现将与异步方法一起正常工作.ReadByte和WriteByte的默认实现创建一个新的单元素字节数组,然后调用Read和Write的实现.从Stream派生时,如果您有内部字节缓冲区,强烈建议您覆盖这些方法以访问内部缓冲区,以获得更好的性能.您还必须提供CanRead,CanSeek,CanWrite,Flush,Length,Position,Seek和SetLength的实现.

不要覆盖Close方法,而是将所有Stream清理逻辑放在Dispose方法中.有关更多信息,请参阅实现Dispose方法.

c# custom-action stream

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

C++绑定问题

有没有什么办法,使boost::bind工作与std::fill

我尝试了以下,但它不起作用:

boost::bind(std::fill, x.begin(), x.end(), 1);
Run Code Online (Sandbox Code Playgroud)

c++ bind fill

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

Python - 运行外部脚本

有人知道我是否有一个脚本one.py,其编写方式如下:

if __name__ == '__main__':
    # Do something
Run Code Online (Sandbox Code Playgroud)

我想main从另一个脚本调用该函数.我该怎么办?

我猜它会是这样的(让我们说这是launcher.py)

# 'one' stands for import from `one.py` module
import one

if __name__ == '__main__':
    one.main()
Run Code Online (Sandbox Code Playgroud)

唯一的问题是我不能这样打电话main().

该怎么做?

python program-entry-point

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

C# - 类访问修改器

是否C#允许以下的事情:

让我们说我已经namespace Xnamespace X.Y.

如何class MyClass在命名空间X.Y内部使用命名空间,以便MyClass无法访问namespace X

c# access-modifiers

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

C++/Java/C#图像处理库

在图像和相似性匹配中找到相似部分的最佳库选择是什么?

谢谢.

c# c++ java image-processing computer-vision

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

C#foreach问题

是否C#可以为以下代码提供一些内容(在重构术语中):

我希望能够用一个电话代替两个foreach电话for every (x, x) possible pair,这样做可以吗?

foreach (var image1 in sequence.Images)
{
    foreach (var image2 in sequence.Images)
    {
        if (image1 != image2)
        {
            metric.SetImageMetric(new ImagePair(image1, image2), 1.0);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# foreach

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

C#Linq问题

是否LINQ有序列运算符,它允许对每个元素执行某些操作而不将其投影到新序列?

这可能看起来有点尴尬,但只是让我知道:)

例:

IEnumerable<IDisposable> x;
x.PERFORM_ACTION_ON_EVERY_ELEMENT(m => m.Dispose());
Run Code Online (Sandbox Code Playgroud)

显然,这可以通过以下方式完成:

foreach (var element in x) x.Dispose();
Run Code Online (Sandbox Code Playgroud)

但如果事实确实存在,那就太好了.

c# linq operation

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

C#Linq问题

如果我有以下声明:

whatever.Select(x => collection.ToArray()[index]).ToList();
Run Code Online (Sandbox Code Playgroud)

那么,LINQ足够智能ToArray只执行一次演化(我真的不知道这个闭包是如何转换和评估的)?

我理解这段代码很糟糕,只是感兴趣.

c# linq optimization performance

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

检查'null'

是否C#有一些经验法则或编码约定契约,它处理可能的null论证?

作为一个例子,我正在编写一个自定义方法,它检索一个byte[] data参数.

public static string ConvertDataToMyOwnAndCustomString(byte[] data) { ... }
Run Code Online (Sandbox Code Playgroud)

现在-我应该怎么做,如果传递的datanull

我应该保留它,以便可能NullReferenceException发生吗?或者我应该写支票并做这样的事情:

if (data == null) return null;
Run Code Online (Sandbox Code Playgroud)

c# convention null nullreferenceexception

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

C++静态成员

我有以下代码:

void Foo() {

   static std::vector<int>(3);

   // Vector object is constructed every function call

   // The destructor of the static vector is invoked at
   // this point (the debugger shows so)
   // <-------------------

   int a;
}
Run Code Online (Sandbox Code Playgroud)

然后在某个地方我Foo按顺序多次打电话

为什么vector对象在每次Foo()调用时都被构造,为什么在static ...声明后调用析构函数呢?


更新:

我试图实现函数一次调用机制,我认为写的东西就像

static core::CallOnce(parameters)CallOnce类名称在哪里会非常好.

在我看来写作static core::CallOnce call_once(parameters)看起来更糟,但没关系,这是我无法用它做任何事情的情况.

谢谢.

c++ static members

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