这是我如何将一个项添加到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对象?
如何从命令窗口打开Git GUI?我正在使用Windows 7.我试过运行这个:
"C:\Apps\Git\libexec\git-core\git-gui"
Run Code Online (Sandbox Code Playgroud)
但那不是Windows脚本.当我右键单击一个文件夹时,我看到一个选项,上面写着"Git GUI Here".当我点击它时,Git GUI就会打开.我想从命令行做同样的事情.
有没有办法将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)
如果这是重复,请告诉我.
我有一个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事件.
在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) 在 Visual Studio Code 中,有没有办法打开所有有合并冲突的文件?当我遇到 Git 合并冲突时,我必须手动去项目资源管理器中查找这些文件。我想单击某个按钮,以便更轻松地找到这些冲突。
我正在用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)
我不知所措. …
我在我的应用程序中使用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的类,并在属性中将依赖项传递给它,但这看起来很混乱.
我的 nginx 错误日志中收到“502 559”错误。我知道 502 的意思是“坏网关”。559是什么意思?
当我在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 2和JavaSE-1.7.请注意,我对Java很新; …
c# ×4
.net ×2
app-config ×1
bad-gateway ×1
c++ ×1
command-line ×1
eclipse ×1
friend ×1
git ×1
git-gui ×1
ienumerable ×1
internal ×1
java ×1
nginx ×1
nlog ×1
serilog ×1
warnings ×1
windows-7 ×1
wpf ×1