小编Ste*_*eve的帖子

C#中的语言决定会让你烦恼吗?

我只是处理字符串,我发现自己很恼火,字符串可以为空.所以,我必须拥有

if((teststring??string.Empty)==string.Empty)
Run Code Online (Sandbox Code Playgroud)

到处都是.会串吗?在需要它的相对较少的情况下(dbs,白痴用户输入等)允许可空性是如此困难.在我想要某种形式的const正确性的情况下,我也发现自己不得不导出只读接口.那么,C#语言构建/决定会让你烦恼么?

编辑:感谢isnullorempty功能,我以前没见过!仍然不会减轻我可以为空的烦恼:D

c#

7
推荐指数
4
解决办法
932
查看次数

如何追踪COM内存泄漏

我正在尝试追踪COM对象中的内存泄漏,而我没有看到任何明显错误的内容.我可能错误地使用了一些COM包装器,但是我找到内存泄漏的标准工具包(AQtime)并没有帮助我使用COM.有没有人有任何技巧/工具来追踪COM内存/参考泄漏?

c++ com memory-leaks

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

使用互操作提升vb6事件

我有一个遗留的VB6组件,我使用tlbimp.exe导入到VS中以生成我的互操作程序集.VB6组件定义了一个允许我在VB6中传递消息的事件.

Public Event Message(ByVal iMsg As Variant, oCancel As Variant)
Run Code Online (Sandbox Code Playgroud)

我真的希望能够在我的C#程序中提高它,但它作为事件导入,而不是委托或其他有用的东西.所以,我只能听,但从不开火.有谁知道如何触发VB6中包含的事件?C#事件看起来像

[TypeLibType(16)]
[ComVisible(false)]
 public interface __MyObj_Event
 {
     event __MyObj_MessageEventHandler Message;
 }
Run Code Online (Sandbox Code Playgroud)

遗憾的是我无法更改VB6代码.谢谢.

c# vb6 interop

6
推荐指数
2
解决办法
3363
查看次数

标题中定义的函数是否保证内联?

如果我在头文件中定义非成员函数,它是否总是由编译器内联,或者编译器是否根据其启发式选择?我知道__inline只是一个提示,是否与标题中的函数相同?

c++ inlining

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

可以通过boost获得C++匿名函数吗?

我正在尝试解决匿名函数变得更加容易的问题,并且想知道这是否可以在c ++中实现.

我想做的是(基本上)

template<typename T>
T DoSomething(T one, function<T(T)> dosomething)
{
    return one + dosomething(5);
}

void GetMyVal(...)
{
   DoSomething<int>(1, /*anonymous func here*/)
}
Run Code Online (Sandbox Code Playgroud)

对于我必须做的事情,这个例子非常非常简单.在C#中我会做p => p*5.我知道这很容易用C++ 0x,但我不能用它.我觉得我应该能够使用boost :: lambda,或使用占位符的boost :: bind和boost :: function的组合,但我似乎无法让它工作.这可能是不可能的,这也很好,但如果不可能请回答.谢谢.

编辑:好吧,似乎int的简单情况工作正常,一个更复杂的结构怎么样?所以,试试吧

struct NumHolder
{
  int x;
}

template<typename T>
T DoSomething(T one, function<T(NumHolder)> dosomething)
{
    NumHolder temp;
    temp = 5
    return one + dosomething(temp);
}

void GetMyVal(...)
{
   DoSomething<int>(1, /*anonymous func here*/)
}
Run Code Online (Sandbox Code Playgroud)

这里我的C#表达式将与p => p.temp*5一致.这是否可以在C++中使用boost进行?

编辑2:好的,现在我只是好奇:D如何调用lambda表达式中的函数?所以,如果我们有

int ChangeVal(int mult)
{
    return mult*5;
}

struct NumHolder …
Run Code Online (Sandbox Code Playgroud)

c++ boost anonymous-function

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

以编程方式删除环境变量

我需要为一些C++代码编写单元测试,以检查是否存在环境变量.我正在使用MSVS 2008和gtest作为我的框架.我使用putenv添加环境变量,我使用getevn检查环境变量,但我无法弄清楚如何删除它,以便没有其他测试会看到它.我意识到这可能很容易,但我在互联网上找不到答案.谢谢

c++ unit-testing environment-variables visual-studio-2008

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

为什么xml在IOC容器中如此突出?

我正试图进入IOC容器,我注意到它们中有很多正在使用xml配置.任何人都可以告诉我为什么许多新技术正朝着xml配置/编程模型(WCF,WPF,Spring.NET,Unity,Windsor)发展?似乎xml是指定复杂设置的不良选择,最好在代码中进行,其中事物是类型安全的,我们有智能感知.我知道有些人可能会发现这种争议,但我真的很好奇为什么这些非常酷,先进的技术依赖于xml.

xml ioc-container

5
推荐指数
3
解决办法
826
查看次数

MSVC - 检查函数是否实际内联的任何方法?

我必须检查编译器是否正在内联函数.有没有办法这样做而不看装配(我不读).我没有选择搞清楚这一点,所以如果我们不能讨论这样做的智慧,我更愿意.谢谢!

c++ visual-c++

5
推荐指数
3
解决办法
622
查看次数

如何判断bjam用于构建boost的优化

我正在使用bjam为intel编译器和vs2008构建boost库,我无法分辨从bjam传递给编译器的优化.对于其中一个编译器的gcc,我可以在其中一个bjam文件中看到一些优化,但我找不到我关心的编译器的优化标志.所以,我的问题是 -

  1. 有谁知道默认优化标志位于何处?
  2. 如果他们在bjam中宣布,有人知道如何覆盖它们吗?

c++ boost bjam

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

如何识别匿名函数

我有一个类创建 aList<Action<int>>并将其保留到稍后的时间。此类可以在此列表中添加和删除委托。只要人们不太花哨,这种方法就很有效。为了对抗匿名函数(无法删除),我检查委托的目标是否为空。如果它为空,我会抛出异常。当存在包含函数的匿名委托时,就会出现问题。它有一个目标,但同样不可移动。下面的简化代码说明了我的问题

 public class MyDelegateContainer
 {
    List<Action<int>> m_Container = new List<Action<int>>();

    public void Add(Action<int> del)
    {
        if (del.Target == null) 
        { 
            throw new Exception("No static handlers"); 
        }
        m_Container.Add(del);
    }

    public bool Remove(Action<int> del)
    {
        if (m_Container.Contains(del))
        {
            m_Container.Remove(del);
            return true;
        }

        return false;
    }
}

public class MyFakeActionClass
{
    public void Test(int temp) { }
}

class Program
{
    static void Main(string[] args)
    {
        bool removed = false;
        int counter = 0;
        MyDelegateContainer container = new MyDelegateContainer();
        MyFakeActionClass …
Run Code Online (Sandbox Code Playgroud)

c# delegates anonymous-function

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