小编use*_*861的帖子

将一个项添加到IEnumerable <T>的最佳方法是什么?

这是我如何将一个项添加到IEnumerable对象:

//Some IEnumerable<T> object
IEnumerable<string> arr = new string[] { "ABC", "DEF", "GHI" };

//Add one item
arr = arr.Concat(new string[] { "JKL" });
Run Code Online (Sandbox Code Playgroud)

这很尴尬.但是,我没有看到类似的方法ConcatSingle().

有没有更简洁的方法将单个项添加到IEnumerable对象?

c# ienumerable extension-methods

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

如何从命令窗口打开Git GUI?

如何从命令窗口打开Git GUI?我正在使用Windows 7.我试过运行这个:

"C:\Apps\Git\libexec\git-core\git-gui"
Run Code Online (Sandbox Code Playgroud)

但那不是Windows脚本.当我右键单击一个文件夹时,我看到一个选项,上面写着"Git GUI Here".当我点击它时,Git GUI就会打开.我想从命令行做同样的事情.

git command-line git-gui windows-7

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

有没有办法将NLog.config信息放在我的app.config文件中?

有没有办法将NLog.config信息放在我的app.config文件中?这样我可以有一个配置文件而不是两个.它可能看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="nlog" type="..." />
  </configSections>
  <nlog>
    <targets>...</targets>
    <rules>...</rules>
  </nlog>
</configuration>
Run Code Online (Sandbox Code Playgroud)

如果这是重复,请告诉我.

.net app-config nlog nlog-configuration

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

我应该使用Closing事件还是覆盖OnClosing?

我有一个WPF项目,其中我有一个带有自定义关闭逻辑的窗口.我想在用户关闭窗口时运行一些代码.我知道有两种方法可以做到这一点,我想知道哪个更好:

选项1)处理base.Closing事件.

选项2)重写OnClosing方法.

这是一些示例代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        base.Closing += this.MainWindow_Closing;
    }

    //Option 1
    void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        //close logic here, or
    }

    //Option 2
    protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
    {
        //close logic here

        base.OnClosing(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以在两个选项之间找到的唯一区别是化妆品.我更喜欢Option 2,因为它对我来说看起来更干净.我更喜欢重写方法来处理事件.

这两个选项之间是否还有其他差异?我知道为其他一些类提供了选项1来处理这个窗口的Closing事件.

编辑:我忘了提到我正在使用.Net 4.0.看起来.Net 4.5有一个OnFormClosing事件,它不赞成OnClosing事件.我没有使用过OnFormClosing事件.

.net c# wpf

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

Visual Studio 2017的"实现接口"命令可以生成C#5代码吗?

在Visual Studio 2017中,在" 快速操作和重构 "菜单中,当我单击" 实现接口 "时,我获得了使用C#的新功能的实现,如下所示:

public int ConnectionTimeout => throw new NotImplementedException();
Run Code Online (Sandbox Code Playgroud)

问题是我的公司正在使用C#5,所以我们不能使用这种新的语法.我知道Visual Studio的旧版本会生成此代码:

public int ConnectionTimeout { get { throw new NotImplementedException(); } }
Run Code Online (Sandbox Code Playgroud)

有没有办法让Visual Studio 2017执行此操作?我已经将我的项目设置为使用C#5进行编译.

编辑:我注意到代码生成器不一致.如果接口具有仅具有getter的bool成员,则它使用旧语法.否则它使用新语法.这让我觉得我运气不好.

private interface myint
{
    bool bool1 { get; }
    bool bool2 { get; set; }
    bool bool3 { set; }

    int int1 { get; }
    int int2 { get; set; }
    int int3 { set; }

    string string1 { get; }
    string string2 { get; set; }
    string string3 …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio visual-studio-2017

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

在 VS Code 中,有没有办法打开所有有合并冲突的文件?

在 Visual Studio Code 中,有没有办法打开所有有合并冲突的文件?当我遇到 Git 合并冲突时,我必须手动去项目资源管理器中查找这些文件。我想单击某个按钮,以便更轻松地找到这些冲突。

visual-studio-code

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

如何在单独的类中访问私有构造函数?

我正在用C++编写一个库.我的图书馆里有两门课,A而且B.我想隐藏A()任何引用我的库的代码中的构造函数.我也希望类B能够调用A()构造函数.

我来自C#背景,并且很少记住我的C++.在C#中,我只是将A()构造函数声明为internal.我已经读过,在C++中最接近的方法是friend声明和前向声明的组合.我该怎么做呢?以下是我的三个文件:

啊:

#pragma once
class A
{
    private:
        A();
};
Run Code Online (Sandbox Code Playgroud)

BH

#pragma once
class A;
class B
{
    public:
        A createA();
};
Run Code Online (Sandbox Code Playgroud)

B.cpp:

#include "A.h"
#include "B.h"

A B::createA()
{
    A result; //cannot access private member declare in class 'A'
    return result;
}
Run Code Online (Sandbox Code Playgroud)

我试过把它添加到啊:

public: friend A createA();
Run Code Online (Sandbox Code Playgroud)

我反而尝试将此添加到Ah并带有相应的前向声明:

public: friend A B::createA();
Run Code Online (Sandbox Code Playgroud)

我反而尝试添加和extern class B;Ah并使B成为这样的类:

public: friend class B;
Run Code Online (Sandbox Code Playgroud)

我不知所措. …

c++ internal friend forward-declaration

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

如何将依赖关系传递给Serilog Enricher?

我在我的应用程序中使用Serilog进行日志记录.当我配置记录器时,我有这样的代码:

var log = new LoggerConfiguration()
    .Enrich.With<MySerilogEnricher>()
    .ReadAppSettings()
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

我想在我的MySerilogEnricher类中注入一些依赖项,但是当我尝试时,我得到了这个编译器错误:

错误CS0310:'SerilogEnricher'必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法'LoggerEnrichmentConfiguration.With()'中将其用作参数'TEnricher'

我理解为什么我会收到这个错误,但我看不到一个简单的方法.理想情况下,WithInstance我可以使用这样的电话:

var instance = new MySerilogEnricher(myDependency);
var log = new LoggerConfiguration()
    .Enrich.WithInstance<MySerilogEnricher>(instance)
    .ReadAppSettings()
    .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

有没有办法将依赖关系传递给MySerilogEnricher?我可能有一个带有MySerilogEnricher的类,并在属性中将依赖项传递给它,但这看起来很混乱.

c# dependency-injection serilog

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

nginx 502 559 错误代码是什么意思?

我的 nginx 错误日志中收到“502 559”错误。我知道 502 的意思是“坏网关”。559是什么意思?

nginx bad-gateway

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

如何在Java中定义main(String [] args)而不会收到警告和错误?

当我在Eclipse项目的默认包中创建一个新的main.java文件时,它会生成一个如下所示的main方法:

public static void main(String[] args)
{
}
Run Code Online (Sandbox Code Playgroud)

这立即引发了一个警告说This method has a constructor name.建议的解决方法是删除void:

public static main(String[] args)
{
}
Run Code Online (Sandbox Code Playgroud)

现在而不是警告,我得到一个错误:Illegal modifier for the constructor in type main; only public, protected & private are permitted.如果我删除了static,我的代码现在看起来像:

public main(String[] args)
{
}
Run Code Online (Sandbox Code Playgroud)

这一次,我仍然得到一个错误,但另一个错误说:

Error: Main method not found in class main, please define the main method as:
    public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)

Argggh!但这让我回到了我开始的地方.如何定义主方法以便我不会收到任何错误或警告?

我正在使用Eclipse Juno Service Release 2JavaSE-1.7.请注意,我对Java很新; …

java eclipse warnings program-entry-point

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