小编Kil*_*zur的帖子

带有泛型约束的 C# 重载

为什么这两种方法不能同名?是因为 C# 编译器在重载时没有考虑泛型类型约束吗?它可以在 C# 的未来版本中完成吗?

public static TValue GetValueOrNull<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
            where TValue : class
{
    TValue value;
    if (dictionary.TryGetValue(key, out value))
        return value;
    return null;
}

public static TValue? GetValueOrNull<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key)
        where TValue : struct
{
    TValue value;
    if (dictionary.TryGetValue(key, out value))
        return value;
    return null;
}
Run Code Online (Sandbox Code Playgroud)

c# generics

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

XML 能否以“&lt;”以外的任何内容开头?

XML 能否以<字符以外的任何内容开头?

当我尝试定义如何区分包含 XML 的字符串和包含 XML 路径的字符串时,这是我的一个随机想法。

我相信答案是否定的,但我希望确定这一点。

xml string w3c file

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

如何从任务栏最小化和最大化 winform?

我有一个 Winforms 应用程序,我可以通过单击窗口右上角的相应按钮将其最小化;然后我可以通过单击此应用程序的任务栏图标来最大化它。

我的问题是,如果窗口被最大化,当我再次单击任务栏图标时它应该被最小化,并且目前没有发生。

我怎样才能使这种行为发生?我不想使用 NotifyIcon 或系统托盘。

c# taskbar .net-4.0 winforms

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

对于失败的文件解析,我应该抛出什么异常?

我有一个解析文件的方法.但是,这种解析可能会随时失败,具体取决于各种条件(例如,不太谨慎的用户使用该文件).

public string ParseDatFile(string datFile)
{
    string[] deezLines = File.ReadAllLines(datFile);

    // We're searching for an essential data inside the file.
    bool daEssentialDataFound = false;
    foreach (string datLine in deezLines)
    {
        if (datLine.Contains("daEssentialData"))
        {
            daEssentialDataFound = true;
            break;
        }
    }

    if (!daEssentialDataFound)
        throw new WhatShouldIThrowException("yo dood where's da essential data in " + datFile + "?");

    DoStuffWith(deezLines);
}
Run Code Online (Sandbox Code Playgroud)

我可以在这种情况下使用例外吗?我想过:

  • FormatException:不是很清楚这个问题,
  • 自定义异常:我没有对我抛出的异常进行任何特殊处理,所以我宁愿避免使用自定义异常,即使这总是一种解决问题的方法.

c# parsing exception

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

处理来自其他应用程序的事件

Hellu

问题很简单,但答案似乎很多,而且很不清楚.

如何在应用程序A中处理应用程序B发送的事件,以及如何在B中实现这些事件?知道B不知道A的存在.

假设B是一种"批处理"类型的程序,在后面做事情,没有任何图形显示,A是一个很好的GUI (双关语)应该写消息B在对话框或其他东西中发送给他.

我找到了有关这方面的有趣答案(就像这一个这个),但实际上没有人用C#的例子回答这个问题; 充其量,他们重定向到一些外部工具.

我听说这是C#中的一个问题,但最后有没有一个干净的方法呢?谢谢.

如果这可以缓解这个问题,让我们说A启动B(带有Process或者其他东西),知道B也可以单独启动(在这种情况下,我不需要整个事件处理事情).

c# process event-handling

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

从列数据中找出峰值间隔

我有一些这样的整数值:

2 4 6 4 2 4 8 4 2 3 7 4 2

我需要找到峰值 - 这是我的数组中值停止增加的点.在上面的例子中,有三个峰值 - 6, 8, 7

怎么做到呢?谢谢.

c# math

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

替换大括号之间的数字

我正在尝试使用正则表达式在NotePad ++中进行替换,但无济于事.

我想改变

>{(number)}<
Run Code Online (Sandbox Code Playgroud)

><
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的XML

<Financials>
   <IncomeStatement>
      <Revenue>{0}</Revenue>
      <OperatingIncome>{1}</OperatingIncome>
      <NetIncome>{2}</NetIncome>
      <BasicEPS>{3}</BasicEPS>
      <AvgSharesOutstand>{4}</AvgSharesOutstand>
   </IncomeStatement>
   <BalanceSheet>
      <CurrentAssets>{5}</CurrentAssets>
      <NonCurrentAssets>{6}</NonCurrentAssets>
      <TotalAssets>{7}</TotalAssets>
      <CurrentLiabilities>{8}</CurrentLiabilities>
      <TotalLiabilities>{9}</TotalLiabilities>
      <TotalEquity>{10}</TotalEquity>
   </BalanceSheet>
   <CashFlow>
      <OperatingCashFlow>{11}</OperatingCashFlow>
      <CapitalExpenditure>{12}</CapitalExpenditure>
      <FreeCashFlow>{13}</FreeCashFlow>
   </CashFlow>
</Financials>
Run Code Online (Sandbox Code Playgroud)

regex xml notepad++

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