小编Tho*_*oub的帖子

错误原因CS0161:并非所有代码路径都返回一个值

我已经制作了一个基本的扩展方法来为我添加重试功能HttpClient.PostAsync:

public static async Task<HttpResponseMessage> PostWithRetryAsync(this HttpClient httpClient, Uri uri, HttpContent content, int maxAttempts, Action<int> logRetry)
{
    if (maxAttempts < 1)
        throw new ArgumentOutOfRangeException(nameof(maxAttempts), "Max number of attempts cannot be less than 1.");

    var attempt = 1;
    while (attempt <= maxAttempts)
    {
        if (attempt > 1)
            logRetry(attempt);

        try
        {
            var response = await httpClient.PostAsync(uri, content).ConfigureAwait(false);
            response.EnsureSuccessStatusCode();
            return response;
        }
        catch (HttpRequestException)
        {
            ++attempt;
            if (attempt > maxAttempts)
                throw;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以下错误:

错误CS0161'HttpClientExtensions.PostWithRetryAsync(HttpClient,Uri,HttpContent,int,Action)':并非所有代码路径都返回一个值.

如果我throw new InvalidOperationException()在最后添加(或者 …

.net c# dotnet-httpclient

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

以管理员身份运行Visual Studio不会看到映射的网络驱动器

我的方式File.Exists()(不)工作有问题:当我使用它时,它声称该文件不存在(来自立即窗口):

filePath
"P:\\poolman\\LY21\\2015\\LY21_2015-03-25_03.xml"
File.Exists(filePath)
false
Run Code Online (Sandbox Code Playgroud)

但是,如果我将文件路径复制/粘贴到资源管理器窗口URL(删除转义\),则会打开该文件.

因此File.Exists()声称现有的文件不存在会让我感到烦恼.

这不是路径长度(43),FileInfo并不是这里建议的更好的选择.

这是FileInfo检查的结果:

var f = new FileInfo(filePath);
{P:\poolman\LY21\2015\LY21_2015-03-25_03.xml}
    base: {P:\poolman\LY21\2015\LY21_2015-03-25_03.xml}
    _name: "LY21_2015-03-25_03.xml"
    Directory: {P:\poolman\LY21\2015}
    DirectoryName: "P:\\poolman\\LY21\\2015"
    Exists: false
    IsReadOnly: true
    Length: '(var f = new FileInfo(filePath);).Length' threw an exception of type 'System.IO.FileNotFoundException'
    Name: "LY21_2015-03-25_03.xml"
Run Code Online (Sandbox Code Playgroud)

我怎么处理它?

.net c#

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

嵌套的对象数组和v-for

好吧,这个问题让我感到难过......在嵌套的for循环数据出现时遇到一些麻烦:

<div v-if = "private.folders!=null" v-for="folder in private.folders">
{{folder.name}}
    <div v-for="check in folder.checks">
        {{check.name}}
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用的数据如下所示:

folders [Array]
-object [this is a single 'folder']
--name
--checks [array] [each folder has this array]
---[object] [the actual 'check' object]
----[name]
Run Code Online (Sandbox Code Playgroud)

外循环工作得很好,并返回我期望的数据.但是,check.name不返回任何内容,并且控制台中没有错误.是否可以像这样做嵌套的for循环?

vue.js

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

内部的"If(.. || ..)"和"If(... && ...)"构造中发生了什么?

我只是想知道" if OR "和" if AND " 内部会发生什么.我有一种感觉,它只是使用语法糖&&,||并且在内部所有情况都构建为单个if语句.

紧凑形式||:

if(a || b || c)
{
    DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

潜在的内部形式:

if(a)
{
    DoSomething();
}    
else if(b)
{
    DoSomething();
}    
else if(c)
{
    DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

紧凑形式&&:

if(a && b && c)
{
    DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

潜在的内部形式:

if(a)
{
    if(b)
    {
        if(c)
        {
            DoSomething();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这两个例子的表现有什么不同吗?

*编辑:将其他内容添加到|| 案件

c# if-statement

21
推荐指数
2
解决办法
2144
查看次数

"git diff"中的"diff --git"输出是指什么?

当我运行时git diff,输出开始于:

diff --git a/foo/bar b/foo/bar
Run Code Online (Sandbox Code Playgroud)

如果我尝试运行普通的旧版本diff --git,我会被告知该--git选项不存在(显然,我认为,对于低级别工具来说,了解特定的DVCS似乎很愚蠢).man页面中也没有提到它.这是从哪里来的?

git

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

启动时Qt FullScreen

我想在全屏(MacOS 10.8.x,Qt 5.1.1,C++)上启动应用程序,具体取决于设置:

main.cpp中

#include "MainWindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.showFullScreen();

    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.cpp

#include "MainWindow.h"
#include "ui_MainWindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
Run Code Online (Sandbox Code Playgroud)

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)

设置的搭配非常完美,就像魅力一样.但this->showFullScreen()做一些非常丑陋的事情:

  1. 全屏显示窗口 …

c++ macos qt fullscreen

19
推荐指数
4
解决办法
6万
查看次数

Qt删除标题栏

我有一个继承自QWidget的MediaPanel,我想要隐藏标题栏,但如果我用setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint);(或其他一些标志)设置标志,则结果仍然相同:mediaPanel

如果我使用,setWindowFlags(Qt::Window | Qt::FramelessWindowHint);我将丢失所有按钮,标签和滑块:空媒体面板

我玩过Qt例子,有些组合似乎不可能......

编辑:

我已经发布了我的代码的减少部分,有人可以告诉我应该在哪里设置标志?

main.cpp:

#include <QApplication>
#include "JokerWindow.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    JokerWindow w(&settings);
    w.show();
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

JokerWindow.h

#ifndef JOKERWINDOW_H
#define JOKERWINDOW_H

#include <QMainWindow>
#include "PhCommonUI/PhMediaPanelDialog.h"

namespace Ui {
class JokerWindow;
}

class JokerWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit JokerWindow(QSettings *settings);
    ~JokerWindow();

private:
    PhMediaPanelDialog _mediaPanel;
};
#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)

JokerWindow.cpp

#include "JokerWindow.h"
#include "ui_JokerWindow.h"

JokerWindow::JokerWindow(QSettings *settings) :
    QMainWindow(NULL),
    ui(new Ui::JokerWindow)
{
    _mediaPanel.show(); …
Run Code Online (Sandbox Code Playgroud)

c++ qt window

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

如何从文本中删除非单词字符?

我希望'这是一个101测试'是'这是一个测试',但我不能正确的语法.

src = 'This Is A 101 Test'
puts "A) " + src                       # base => "This Is A 101 Test"
puts "B) " + src[/([a-z]+)/]           # only does first word => "his"
puts "C) " + src.gsub!(/\D/, "")       # Does digits, I want alphabetic => "101"
puts "D) " + src.gsub!(/\W///g)        # Nothing. => ""
puts "E) " + src.gsub(/(\W|\d)/, "")   # Nothing. => ""
Run Code Online (Sandbox Code Playgroud)

ruby regex

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

我应该使用"&&"还是"和"?

我正在使用C++ 11,两者都在没有任何警告的情况下进行编译,一个是最好的方法吗?

if(a && b)
Run Code Online (Sandbox Code Playgroud)

要么

if(a and b)
Run Code Online (Sandbox Code Playgroud)

c++ boolean-logic language-lawyer

15
推荐指数
3
解决办法
1400
查看次数

Mac OS 10.10或10.11上的Homebrew无效

安装Homebrew后,当我运行任何时brew ***,我不断收到此错误:

Homebrew requires Leopard or higher. For Tiger support, see:
https://github.com/mistydemeo/tigerbrew
Run Code Online (Sandbox Code Playgroud)

我的环境:Mac OS 10.10(约塞米蒂)

我检查了brew.rb来源,它有:

if MACOS and MACOS_VERSION < 10.5
  abort <<-EOABORT.undent
    Homebrew requires Leopard or higher. For Tiger support, see:
    http://github.com/sceaga/homebrew/tree/tiger
  EOABORT
end
Run Code Online (Sandbox Code Playgroud)

我不知道为什么Yosemite会触发这个版本检查.

macos homebrew osx-yosemite

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