小编Pho*_*que的帖子

string.Contains作为谓词而不是函数调用?

我在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.

c# linq predicate

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

干(不要重复自己)和如果分配

我想我忘记了一些明显的东西,但是我似乎无法找到一种方法来分配一个值,如果它确认一个条件尽可能保持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)

...是的,不确定这个例子是否足够明确,但这个想法就在这里; 我可能不想将数据存储在变量(例如巨大的数据块)中是否有办法获得相同的结果?

c# syntax if-statement dry

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

WPF MVVM 如何使用 ShowDialog() 上的绑定预填充文本框?

我有一个用 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 中恢复的自定义对象, …

c# wpf dialog mvvm

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

标签 统计

c# ×3

dialog ×1

dry ×1

if-statement ×1

linq ×1

mvvm ×1

predicate ×1

syntax ×1

wpf ×1