问题列表 - 第29798页

C#中的歧视联盟

[注意:这个问题的原始标题是" C#中的C(ish)风格联盟 ",但正如杰夫的评论告诉我的那样,显然这种结构被称为"歧视联盟"]

请原谅这个问题的冗长.

我们已经在SO中提出了几个类似的声音问题,但他们似乎专注于联盟的内存节约优势或将其用于互操作. 这是一个这样的问题的例子.

我希望有一个联合类型的东西有点不同.

我现在正在编写一些代码来生成看起来有点像这样的对象

public class ValueWrapper
{
    public DateTime ValueCreationDate;
    // ... other meta data about the value

    public object ValueA;
    public object ValueB;
}
Run Code Online (Sandbox Code Playgroud)

很复杂的东西,我想你会同意的.事情是,ValueA只能是几种特定类型(比方说string,intFoo(这是一个类),ValueB可以是另一小类.我不喜欢将这些值视为对象(我希望温暖舒适的感觉)编码有点类型安全).

所以我想写一个简单的小包装类来表达ValueA逻辑上是对特定类型的引用这一事实.我打电话给班级,Union因为我想要实现的目标让我想起了C语言中的联合概念.

public class Union<A, B, C>
{
    private readonly Type type; 
    public readonly A a;
    public readonly B b;
    public readonly C c;

    public A A{get {return a;}}
    public B B{get {return b;}}
    public C C{get …
Run Code Online (Sandbox Code Playgroud)

c# type-safety discriminated-union

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

VB.NET中的方法体内不允许使用代码区域?

注意:此"功能"现已添加到Visual Studio 2015中,但问题将持续一段时间,因为并非每个开发人员或每个开发工作室都会在它出现时立即访问最新和最好的IDE.

原始问题:

通常情况下,我不会"需要"甚至考虑一个荒谬的功能,例如方法体内的代码区域,但是:我正在重构VB.NET代码,其中方法通常运行500行或更多代码并且引用紧密耦合到代码违反了简单的重构,例如方法提取.

这就是为什么我认为我会在方法体中尝试区域.我只想组织短期代码.但IDE不允许我(导致编译器错误.)我只是好奇为什么?似乎代码区域不应该影响编译器,intellisense等.我错过了什么?(仍然使用VS 2005 btw.)

有趣:这似乎是语言特定的.它在C#中是可以的(我最初没有检查)但在VB.NET中没有.

public module MyModule
    Sub RunSnippet()
        dim a as A = new A (Int32.MaxValue )

        #region 
        Console.WriteLine ("")
        #end region
       ....
Run Code Online (Sandbox Code Playgroud)

得到编译器错误,但C#版本没问题.

.net c# vb.net code-regions

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

JSF2:使用EJB在视图中打开会话?

在JSF2应用程序中讨论视图模式中的Open Session是否有意义?我的应用程序有JSF2 Managed Beans调用业务服务EJB来执行所有与db相关的东西(有一个DAO层,但现在无关紧要).

拥有OSIV模式意味着Managed Bean必须以某种方式确保底层会话被打开.

我也在使用JPA.

java architecture jsf ejb-3.0 jsf-2

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

在Windows 64中编译32位应用程序时未解析的外部符号

所以我试图将遗留应用程序从32位编译到64位.我重新编译了它使用的所有库,并使其查看到WIN SDK6.0A x64位用于库.

我在用:

  • Visual Studio Professional Edition 2008
  • Visual C++
  • dotNet Framework 3.5 SP1
  • Windows Server 2008R2
  • Windows SDK是6.0A

Everythings终于出现但我得到这些奇怪的未定义符号错误:

error LNK2019: unresolved external symbol InterlockedDecrement referenced in function ...
error LNK2019: unresolved external symbol InterlockedIncrement referenced in function ...
error LNK2019: unresolved external symbol GetModuleBaseName referenced in ...
error LNK2019: unresolved external symbol EnumProcessModules referenced in ...
error LNK2019: unresolved external symbol EnumProcesses referenced in ...
error LNK2019: unresolved external symbol GetProcessMemoryInfo referenced 
Run Code Online (Sandbox Code Playgroud)

问题是这些都是来自SDK的胜利.InterlockedDec和InterlockedInc来自kernel32.lib GetModuleBaseName,EnumProcessModules,EnumProcesses,GetProcessMemoryInfo在psapi.h中,但也包含kernel32.lib或psapi.lib

I checked C:\Program …

c++ winapi win64 visual-studio-2008 kernel32

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

boost program_options multiple values problem

So I'm working off one of the examples for Boost program_options library, and I wanted to try setting a default value for one of the multiple-values/ vector-values, but it doesn't seem to work. As I think is suggested here to work.

What I've modified is on about line 40:

    po::options_description config("Configuration");
    config.add_options()
        ("optimization", po::value<int>(&opt)->default_value(10), 
              "optimization level")
        ("include-path,I", o::value< vector<string> >()->default_value(vector<string>(),"SOMETHING")->composing(), "include path")
        ;
Run Code Online (Sandbox Code Playgroud)

When I compile this small change, I expect that when no -I option is passed that …

c++ boost boost-program-options

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

全局静态类和方法都不好吗?

人们普遍认为应该避免严重依赖全球性的东西.不会使用静态类和方法是一回事吗?

.net c# language-agnostic oop

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

从内部程序调用gdb打印其堆栈跟踪的最佳方法是什么?

使用这样的函数:

#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

void print_trace() {
    char pid_buf[30];
    sprintf(pid_buf, "--pid=%d", getpid());
    char name_buf[512];
    name_buf[readlink("/proc/self/exe", name_buf, 511)]=0;
    int child_pid = fork();
    if (!child_pid) {           
        dup2(2,1); // redirect output to stderr
        fprintf(stdout,"stack trace for %s pid=%s\n",name_buf,pid_buf);
        execlp("gdb", "gdb", "--batch", "-n", "-ex", "thread", "-ex", "bt", name_buf, pid_buf, NULL);
        abort(); /* If gdb failed to start */
    } else {
        waitpid(child_pid,NULL,0);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在输出中看到了print_trace的细节.

有什么其他方法可以做到这一点?

c linux gdb stack-trace

58
推荐指数
3
解决办法
4万
查看次数

为什么没有为CMFCMenuButton绘制下拉箭头?

尝试将CMFCMenuButton添加到现有MFC应用程序时遇到了此问题。它工作正常,甚至调整了按钮的大小以适应下拉箭头。但是它没有绘制下拉箭头,当我将鼠标悬停在按钮上时,我看到了以下调试输出:

> Can't load bitmap: 42b8.GetLastError() = 716
> CMenuImages. Can't load menu images 3f01
Run Code Online (Sandbox Code Playgroud)

事实证明,即使使用Visual Studio 2010 RTM,在创建基于MFC对话框的全新应用程序时,CMFCMenuButton也不绘制箭头,并显示相同的错误。最初,我以为我没有正确安装或注册任何东西。但是,MFC Feature Pack中的NewControls示例完美显示了下拉箭头。

缺什么?

c++ mfc widget cmfcmenubutton

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

如何设置QComboBox宽度以适合最大的项目?

我有一个QComboBox填写QString使用:

comboBox->addItem(someString);
Run Code Online (Sandbox Code Playgroud)

当我启动GUI应用程序时,宽度QComboBox始终为70,即使最小的项目要大得多.如何动态设置的宽度QComboBox,例如,在最大QString范围内的comboBox

编辑:

经过一些进一步的测试后,我发现了以下解

// get the minimum width that fits the largest item.
int width = ui->sieveSizeComboBox->minimumSizeHint().width();
// set the ComboBoxe to that width.
ui->sieveSizeComboBox->setMinimumWidth(width);
Run Code Online (Sandbox Code Playgroud)

c++ user-interface qt qcombobox

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

比较C++中两个数组的2个元素

我有两个数组,每个数组都有一些值,例如:

int a[] =  {1, 2, 3, 4};
int b[] =  {0, 1, 5, 6};
Run Code Online (Sandbox Code Playgroud)

现在我需要将数组(a)的元素与数组(b)中的元素进行比较..如果有任何匹配程序应该返回错误或打印"错误有重复值"等等.在上述情况,它应该返回一个错误coz a [0] = b [1],因为它们都有相同的值.

我怎样才能做到这一点??

c++ arrays compare function

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