小编Dal*_*ale的帖子

函数中的静态int

我遇到了这段代码:

void function(int nextFoo)
{
    static int lastFoo = nextFoo; 
    if (nextFoo != lastFoo) 
    {
         // is this possible?
    }
    lastFoo = nextFoo;
}
Run Code Online (Sandbox Code Playgroud)

编码器认为lastFoo只在第一次运行中设置,最后一行,他是对的吗?我认为(但不知道)if块中的代码永远不会运行,但无法找到验证.

c++ static function

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

异常处理c#并不像我预期的那样 - 为什么?

我有以下C#代码:

try
{
    response = this.writeDataToChannel(writeRequest);
    if (response.Failures != null)
    {
        Console.WriteLine(response.Failures.First().cause);
    }
}
catch (TimeoutException te)
{
     Console.Error.WriteLine(te.Message);
}
Run Code Online (Sandbox Code Playgroud)

当我在发布中运行此代码并将大量数据推送到服务时,VS2010在带有TimeoutException的"writeDataToChannel"行上停止.不应该我的catch块捕获异常并在超时发生时打印它吗?

"writeDataToChannel"代码是从WSDL生成的,写入总是有效,直到我将大量数据推送到Web服务,所以我认为我的请求没有问题.

它不是命名空间问题,在两种情况下都是System.TimeoutException.

c# exception-handling

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

C++自动方式使截断在运行时打印错误

我刚加入了一个拥有数千行代码的团队,如:

int x = 0; 
x=something(); 
short y=x; 
doSomethingImportantWith(y); 
Run Code Online (Sandbox Code Playgroud)

编译器提供了很好的警告:将XX位类型值转换为"short"会导致截断.我被告知,没有任何情况下截断确实发生,但我严重怀疑它.

是否有一种很好的方法可以将检查插入到具有以下效果的每种情况中:

if (x>short.max) printNastyError(__FILE,__LINE); 
Run Code Online (Sandbox Code Playgroud)

在每次任务之前?手动执行此操作将花费更多的时间和精力,并且编写一个脚本来读取警告并将这些内容添加到正确的文件以及所需的包含似乎有点过分 - 特别是因为我希望有人已经完成这个(或类似的东西).

我不关心性能(真的)或除了知道这些问题何时发生以外的任何事情,所以我可以解决那些真正重要的问题,或者说我可以说服管理层这是一个问题.

c++ truncation

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

错误消息:"无法转换类型'字符串?' 'string'"

我有这个代码:

//Return null if the extension doesn't have the value, returns the value if it does.
private T? getValue<T>(IEnumerable<Extension> extension, string attributeName)
{
    IEnumerable<Extension> ext = extension.Where(e => e.attributeName == attributeName);
    if (ext.Count() > 0)
    {
        return (T)ext.First().Attribute;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我称之为:

//This works:
retVal.byteValue= getValueFromExtension<byte>(u, "ByteToGet") ?? 0;
//This doesn't work:
getValueFromExtension<string>(u, "Text") ?? "";
Run Code Online (Sandbox Code Playgroud)

我得到编译错误:"错误消息:"无法转换类型'字符串?' 'string'"

如何在不创建新方法的情况下有效地完成上述代码中的想法?

我觉得我正在检查它是否为空?运算符,因此,如果字符串为null,则始终将其设置为空字符串.它是如何处理我对字节和int的期望,为什么不为字符串?

FYI,上面的byteValue,是字节类型,而不是字节?

c# generics nullable

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

lambda表达式中的struct引用

我在使用lambda表达式设置结构中的值时遇到问题,该表达式引用了定义lambda表达式的函数中的本地值.如果我理解正确,结构在lambda函数中通过值传递,但我希望它通过引用传递.我不知道怎么做.

测试代码:

public struct partialData
{
    public int foo;
}
public struct futureData
{
    public int bar;
}

// if you change this to a class, everything works as desired.
public struct someStruct 
{
    public partialData pd;
    public futureData fd;
}
class Apple
{
    private Action<object> toBeSet;
    public someStruct makeStruct(partialData pd)
    {
        someStruct ss = new someStruct();
        ss.pd = pd;

        toBeSet = new Action<object>(
             (futureValue) => ss.fd = (futureData)futureValue
        );
        return ss;
    }
    public void futureSet(futureData fd)
    {
        toBeSet.Invoke(fd);
    } …
Run Code Online (Sandbox Code Playgroud)

c# lambda struct

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

以模板化类作为返回值的 C++ 模板化函数

我有这个Java代码:

public interface Adapter<FROM,TO> {
    /**
     * Adapts something from one type to a type. 
     * @param f
     * @return
     */
    public TO adapt(FROM f);
    
    /**
     * Chains adapters. 
     * 
     * @param <NEXT>
     * @param next 
     * @return a new adapter that takes the output of this adapter and 
     * adapts to something of type NEXT.
     */
    public default <NEXT> Adapter<FROM,NEXT> chain(Adapter<TO,NEXT> next){
        Adapter<FROM,TO> x=this; 
        return new Adapter<FROM,NEXT>(){
            @Override
            public NEXT adapt(FROM f) {
                return next.adapt(x.adapt(f));
            }
        };
    }
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢 …

c++ templates undefined-reference

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