小编Mat*_*att的帖子

如何在C#中创建一个类型化的IEnumerable?

我可以做这个:

public class EnumerableTest : System.Collections.IEnumerable
{
    System.Collections.IEnumerable data;

    public EnumerableTest(System.Collections.IEnumerable d)
    {
        data = d;
    }

    public System.Collections.IEnumerator GetEnumerator()
    {
        foreach (object s in data)
        {
            yield return s;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不能这样做?:

public class EnumerableTestString : System.Collections.Generic.IEnumerable<string>
{
    System.Collections.Generic.IEnumerable<string> data;

    public EnumerableTestString(System.Collections.Generic.IEnumerable<string> d)
    {
        data = d;
    }

    public System.Collections.Generic.IEnumerator<string> GetEnumerator()
    {
        foreach (string s in data)
        {
            yield return s;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误基本上说我错过了方法

    public System.Collections.IEnumerator GetEnumerator();
Run Code Online (Sandbox Code Playgroud)

当我改变返回类型时GetEnumerator(),它告诉我我失踪了

    public System.Collections.Generic.IEnumerator<string> GetEnumerator();
Run Code Online (Sandbox Code Playgroud)

如果我尝试包括两者,它告诉我我有一个重复的方法名称.

我怎么解决这个问题?

.net c# ienumerable iterator interface

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

在C#中,有没有办法告诉Regex.Replace有多少替换品?

可能重复:
计数正则表达式替换(C#)

有没有办法告诉一个Regex.Replace(...)电话有多少替换?

.net c# regex

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

在C++中,采用基类的构造函数是否算作复制构造函数?

例如:

class Derived : public Base
{
    Derived(const Base &rhs)
    {
        // Is this a copy constructor?
    }
    const Derived &operator=(const Base &rhs)
    {
        // Is this a copy assignment operator?
    }
};
Run Code Online (Sandbox Code Playgroud)
  1. 显示的构造函数是否算作复制构造函数?
  2. 赋值运算符是否显示为复制赋值运算符?

c++ inheritance copy-constructor copy-assignment

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

如何在C++中为实例化的模板类编写头文件?

我想创建一个模板类(姑且称之为Foo)只接受少数特殊类型的参数(比方说只doublefloat).通常模板在头文件(.h)中实现,因为不知道它将如何在用户代码中实例化.在这种情况下,在实现文件(.cpp)中实现类更有意义,如下所示:

// Foo.cpp:

template <class T>
class Foo
{
    // Insert members here
};

typedef Foo<double> Foo_d;
typedef Foo<float> Foo_f;
Run Code Online (Sandbox Code Playgroud)

这将在编译Foo.cpp时实例化并编译该类.但是,如何在头文件中声明这个,而不用为Foo_d和编写单独的声明Foo_f

c++ templates instantiation header-files

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

有没有更好的方法来阻止Go中的无限goroutine?

我用goroutines做了一个简单的时钟信号:

func clockloop(ch chan byte) {
    count := 0
    for {
        time.Sleep(FRAMELEN)
        count++
    innerfor:
        for count {
            select {
                case ch <- 1:
                    count--
                default:
                    break innerfor
            }
        }
    }
}

func MakeClock() chan byte {
    clock := make(chan byte)
    go clockloop(clock)
    return clock
}
Run Code Online (Sandbox Code Playgroud)

我知道这个时钟是不精确的,但这是无关紧要的.我想知道的是阻止这个goroutine的最佳方法是什么?

理想情况下,我希望它能在通道的任何听众超出范围时立即停止,但我知道如何做到这一点(很像垃圾收集器,但对于goroutines).我想出了两种手动停止它的方法:(1)使用全局停止变量,所有这些goroutine都会检查每个循环,(2)使用停止通道.这些中的每一个的缺点是我必须手动停止goroutines.

go goroutine

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

在WPF中,如何在DataGrid中仅允许选择单个单元格?

我希望它只能在DataGrid中选择一个单元格.禁用多选时,您仍然可以选择一系列单元格,但我希望它只允许单个单元格选择.有没有办法通过属性这样做?或者我是否必须截取选择并过滤除一个单元格以外的所有内容?

.net c# wpf

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

在Racket或Scheme中,有没有办法将省略号语法对象转换为语法对象列表?

例如:

(syntax-case #'(a b c d) ()
  ((x ...) (list #'x ...))
Run Code Online (Sandbox Code Playgroud)

在示例中,(list #'x ...)显然不起作用,但我可以做什么来输出相当于(list #'a #'b #'c #'d)

scheme ellipsis pattern-matching racket syntax-object

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

在bash中,是否有一种方法可以将多个管道连接到一个进程?

例如,如果我想diff在预处理它们之后执行两个文件中的一个sed,有没有办法在没有临时文件的情况下执行此操作?

我尝试过这样的事情(正如我所料)它不起作用:

(sed "$expr" file1; sed "$expr" file2) | diff - -
Run Code Online (Sandbox Code Playgroud)

我在想可能有一种方法可以明确地创建管道或其他东西.

bash sed pipe

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

调用PyRun_String(...)返回NULL后,如何获取异常信息?

我正在尝试运行以下代码:

Py_Initialize();
PyObject *py_main = PyImport_AddModule("__main__");
PyObject *py_dict = PyModule_GetDict(py_main);
PyObject *ret = PyRun_String(SOME_PYTHON_CODE, Py_file_input, py_dict, py_dict);
Run Code Online (Sandbox Code Playgroud)

但似乎有在我的生成Python代码(一个错误的地方SOME_PYTHON_CODE)等ret出来作为NULL指示异常发生。如何获得此例外?

c python python-c-api

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

如何为用 C 实现的解释型语言提供垃圾回收?

如果我要在 C 中实现垃圾收集解释语言,我怎样才能在不编写自己的垃圾收集器的情况下提供精确的(即非保守的)垃圾收集?有可用的库吗?如果有,是哪些?我知道我必须为垃圾收集器跟踪的任何对象维护某些不变量。

c interpreter garbage-collection

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