小编mor*_*rog的帖子

Microsoft Visual Studio和C#:如何直观地向控件添加事件?

也许这是一个愚蠢的问题,但对于我的生活,我找不到办法做到这一点.

如何使用C#在Microsoft Visual Studio(2008)中向表单中的控件添加事件处理程序?

我可以手动完成,但打开Form的Designer.cs文件,但我无法通过界面找到方法.在MSVC 6中,使用C++和MFC,您可以右键单击或执行其他操作,并查找该控件的所有可能事件的列表.然后你选择它,它会弹出一个窗口,让你创建一个与该事件相关联的方法.在VB中它更容易,您可以在代码中执行它并且它列出了方法下拉列表中的所有事件.

但是,我在2008年用C#找不到任何类似的东西.Intellisense有助于填写正确的方法信息.但是,它总是在Designer.cs文件中创建方法,而不是它应该在的部分类的另一半.

谢谢.

c# events designer visual-studio-2008 visual-studio

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

让GCC在没有内联汇编的情况下使用进位逻辑实现任意精度算术?

使用任意精度算术(例如512位整数)时,有没有办法让GCC在不使用内联汇编的情况下使用ADC和类似指令?

乍一看GMP的源代码显示,它们只是为每个支持的平台提供了汇编实现.

这是我编写的测试代码,它从命令行添加两个128位数字并打印结果.(受mini-gmp的add_n启发):

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>

int main (int argc, char **argv)
{
    uint32_t a[4];
    uint32_t b[4];
    uint32_t c[4];
    uint32_t carry = 0;

    for (int i = 0; i < 4; ++i)
    {
        a[i] = strtoul (argv[i+1], NULL, 16);
        b[i] = strtoul (argv[i+5], NULL, 16);
    }

    for (int i = 0; i < 4; ++i)
    {
        uint32_t aa = a[i];
        uint32_t bb = b[i];
        uint32_t r = aa + carry;
        carry = (r < carry);
        r += …
Run Code Online (Sandbox Code Playgroud)

c optimization gcc compiler-optimization arbitrary-precision

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

为什么现代Web浏览器的代码库如此之大?

适用于Chrome,Firefox和Safari(WebKit)等现代Web浏览器的代码库非常庞大.我很好奇是什么特别使他们的实现非常简单,他们需要大量的代码.

作为一个推论,如果一个假设的浏览器只支持严格的HTML5和JavaScript,为了避免兼容性攻击,代码库是否会明显变小?

html browser firefox google-chrome

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

C#:使用编译器强制检查null

我正在设计一个API,并且当一些方法无法完成所请求的操作时返回null,比如按名称搜索对象.这需要使用这些方法来检查空结果,否则就有可能暴露出错误.

如果没有检查方法的结果是否为空,是否有编译时错误/警告?例如,如果您声明一个变量然后使用它而不分配任何内容,编译器会抱怨.这些方法返回引用类型,因此Nullable不起作用,尽管它确实具有我想要的行为.

抛出异常也是一个很好的解决方案,但据我所知,C#没有办法强制捕获像Java这样的异常.

谢谢.

c#

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

在 Python 的 SWIG 中包装 boost::shared_ptr 的 std::vector

编辑:解决了,我的错误;在我的回答中解释了。

我有这个:

std::vector < boost::shared_ptr < Entity > > entities;
Run Code Online (Sandbox Code Playgroud)

我尝试通过 SWIG 公开它,如下所示:

%include "boost_shared_ptr.i"
%include "std_vector.i"

%shared_ptr(Entity)
%include <Entity.h>

namespace std {
    %template(EntityVector) vector<boost::shared_ptr<Entity> >;
};

%include <TheFileWithEntities.h>
Run Code Online (Sandbox Code Playgroud)

然而,在 Python 中实体最终是一个元组:

import MyModule
print type(MyModule.cvar.entities)
# Output: (type 'tuple')
Run Code Online (Sandbox Code Playgroud)

我已经用谷歌搜索过这个,但找不到任何关于如何包装它的具体例子。一页给出了一个小示例,用于将其包装为 C#,但对我来说没有帮助。

任何帮助是极大的赞赏。

c++ python swig vector shared-ptr

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

线程安全的Python属性/属性?

我有以下代码:

class SomeSharedData(object):
    def __init__(self):
        self._lock = RLock()
        self._errors = 0

    @property
    def errors(self):
        with self._lock:
        return self._errors

    @errors.setter
    def errors(self, value):
        with self._lock:
            self._errors = value
Run Code Online (Sandbox Code Playgroud)

除了更多的属性,如errors.我的目标是易用性,而不是效率,所以过度锁定很好.

是否有更简洁的方法来定义这些属性?

到目前为止我提出的最好的是:

class thread_safe_property(object):
    def __init__(self, name=None):
        self.name = name

    def __get__(self, obj, objtype):
        with obj._lock:
            return getattr(obj, self.name)

    def __set__(self, obj, val):
        with obj._lock:
            setattr(obj, self.name, val)

class SomeSharedData(object):
    def __init__(self):
        self._lock = RLock()
        self._errors = 0

    errors = thread_safe_property('_errors')
Run Code Online (Sandbox Code Playgroud)

想法?更好的方法?

原始代码和新方法都会遇到类似语句的可能竞争条件data.errors += 1,但我很少需要执行这些操作,因此我在需要时添加了变通方法.

谢谢!

python attributes properties thread-safety

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