我在SO上找到了这个代码示例(不记得从哪里:/),它允许我在启动我的应用程序时检查行代码参数:
if (e.Args.Length == 0 || e.Args.Any("-show".Contains))
{
//show interface...
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法理解它是如何"-show".Contains工作的.如果与(经典)有任何区别x => x.Contains('"-show")(除了明显的打字增益).
工作就像一个魅力,但我想明白为什么,我觉得一些大的东西是hapening.
我想我忘记了一些明显的东西,但是我似乎无法找到一种方法来分配一个值,如果它确认一个条件尽可能保持DRY ......一些代码来解释我的意思......
a = (b > 1) ? b : c;
Run Code Online (Sandbox Code Playgroud)
甚至 a = (a > 1) ? a : b;
所以当然这里没什么大不了的,但如果要用方法调用替换,(可能是那里的收益率)或其他什么,那么我就要调用它两次......
我唯一看到的是将它存放在一个变量中,然后就像上面的代码一样......
有什么好主意吗?
编辑以便更好地理解:假设我在xml文件中搜索一个值,使用空检查(?.?[])等等
string store_no = myXmlNode.SelectSingleNode("aChildNode")?.SelectSingleNode("myNode")?.Attributes?["store_no]?.Value;
Run Code Online (Sandbox Code Playgroud)
所以在这里我将它存储在一个变量中,以便我可以稍后测试它的值.如果我想检查一个特定的store_no!我将不得不做类似的事情
store_no = (store_no=="STORE23")? store_no : "unknown";
Run Code Online (Sandbox Code Playgroud)
...是的,不确定这个例子是否足够明确,但这个想法就在这里; 我可能不想将数据存储在变量(例如巨大的数据块)中是否有办法获得相同的结果?
我有一个用 a 显示的表单窗口ShowDialog(),文本框绑定到视图模型中的属性。我像这样打开我的对话框(简化版):
FilterWindowView wnd = new FilterWindowView();
FilterWindowViewModel fvm = new FilterWindowViewModel(licenseRecords) { wnd = wnd };
wnd.DataContext = fvm;
fvm.RestoreCurrentFilters();
if (wnd.ShowDialog() ?? false)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
我在表单中设置的属性用作过滤器参数,我将其存储在静态类中以检索以备后用。
我想要做的是让文本框自动填充存储在这个静态类中的当前值。
我的文本框绑定属性如下所示:
private string _product;
public string product
{
get { return _product; }
set
{
if (_product == value)
return;
_product = value;
Helper.product = value;
if (value != "")
chkProduct = true;
OnPropertyChanged();
}
}
Run Code Online (Sandbox Code Playgroud)
(我认为在验证时重新分配可能会更好的性能,但这是另一个问题......)我的问题是,如果我设置一个值(即在构造函数中),该值会被设置,但是在调用时ShowDialog(),该值是重置为“”。
还尝试在实例化 VM 后调用方法,但如上所述,显示窗口时(调用时ShowDialog())会发生此重置...
此表单生成一个我在 VM 中恢复的自定义对象, …