相关疑难解决方法(0)

上与下案例

在进行不区分大小写的比较时,将字符串转换为大写或小写更有效吗?它甚至重要吗?

在这篇SO帖子中建议C#使用ToUpper更有效,因为"Microsoft以这种方式优化了它".但我也读过这个论点,转换ToLower与ToUpper取决于你的字符串包含的内容,并且通常字符串包含更多小写字符,这使得ToLower更有效.

特别是,我想知道:

  • 有没有办法优化ToUpper或ToLower,使一个比另一个更快?
  • 在大写或小写字符串之间进行不区分大小写的比较是否更快?为什么?
  • 是否存在任何编程环境(例如C,C#,Python等),其中一个案例明显优于另一个案例,为什么?

language-agnostic string uppercase

79
推荐指数
5
解决办法
4万
查看次数

.NET - 实现"捕获所有异常处理程序"的最佳方法是什么

我想知道最好的方法是"如果所有其他方法都失败了".

我的意思是,你在应用程序中处理尽可能多的异常,但仍然存在bug,所以我需要有一些东西可以捕获所有未处理的异常,这样我就可以收集信息并将它们存储在数据库中或提交它们到网络服务.

AppDomain.CurrentDomain.UnhandledException事件是否捕获了所有内容?即使应用程序是多线程的?

旁注:Windows Vista公开了本机API函数,允许任何应用程序在崩溃后自行恢复...现在无法想到名称...但我宁愿不使用它,因为我们的许多用户仍在使用Windows XP.

.net c# exception-handling exception

75
推荐指数
4
解决办法
3万
查看次数

什么是惯用代码?

我会对一些前后c#例子,一些非惯用语和惯用语例子感兴趣.非c#示例也可以,如果他们得到了想法.谢谢.

c#

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

如何使C#Switch语句使用IgnoreCase

如果我有一个switch-case语句,其中switch中的对象是字符串,是否可以进行ignoreCase比较?

我有例如:

string s = "house";
switch (s)
{
  case "houSe": s = "window";
}
Run Code Online (Sandbox Code Playgroud)

将获得价值"窗口".如何覆盖switch-case语句,以便使用ignoreCase比较字符串?

c# switch-statement

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

Bash的隐藏功能

Shell脚本通常用作粘合剂,用于自动化和简单的一次性任务.您最喜欢的Bash shell /脚本语言的"隐藏"功能有哪些?

  • 每个答案一个功能
  • 举一个示例和该功能的简短描述,而不仅仅是文档的链接
  • 使用粗体标题作为第一行标记要素

也可以看看:

bash shell scripting hidden-features

72
推荐指数
23
解决办法
4万
查看次数

枚举字母表的最快方法

我想迭代字母表,如下所示:

foreach(char c in alphabet)
{
 //do something with letter
}
Run Code Online (Sandbox Code Playgroud)

一组字符是最好的方法吗?(感觉很讨厌)

编辑:度量标准是"实现最少的类型,同时仍然可读且健壮"

c# alphabet

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

自动创建空的C#事件处理程序

无法在没有附加处理程序的C#中触发事件.因此,在每次调用之前,有必要检查事件是否为空.

if ( MyEvent != null ) {
  MyEvent( param1, param2 );
}
Run Code Online (Sandbox Code Playgroud)

我想保持我的代码尽可能干净,并摆脱那些空检查.我不认为这会影响性能,至少在我的情况下不会.

MyEvent( param1, param2 );
Run Code Online (Sandbox Code Playgroud)

现在我通过手动为每个事件添加一个空的内联处理程序来解决这个问题.这很容易出错,因为我需要记住这样做等等.

void Initialize() {
  MyEvent += new MyEvent( (p1,p2) => { } );
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用反射和一些CLR魔法自动为给定类的所有事件生成空处理程序?

c# clr events delegates

68
推荐指数
5
解决办法
5万
查看次数

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

事件 - 命名约定和样式

我正在学习C#中的事件/代表.我可以问一下你对我所选择的命名/编码风格的看法(取自Head First C#书)吗?

我明天正在和朋友一起教这个问题,并且正在尝试用最优雅的方式来解释这些概念.(认为​​理解一门学科的最好方法就是尝试教它!)

class Program
    {
        static void Main()
        {
            // setup the metronome and make sure the EventHandler delegate is ready
            Metronome metronome = new Metronome();

            // wires up the metronome_Tick method to the EventHandler delegate
            Listener listener = new Listener(metronome);
            metronome.OnTick();
        }
    }
Run Code Online (Sandbox Code Playgroud)
public class Metronome
    {
        // a delegate
        // so every time Tick is called, the runtime calls another method
        // in this case Listener.metronome_Tick
        public event EventHandler Tick;

        public void OnTick()
        {
            while (true) …
Run Code Online (Sandbox Code Playgroud)

c# events delegates

58
推荐指数
4
解决办法
5万
查看次数

C#反模式

简而言之:我发现Java反模式是不可或缺的资源.适合初学者和专业人士.我还没有为C#找到这样的东西.所以我将这个问题作为社区维基开放,并邀请所有人分享他们对此的了解.由于我是C#的新手,我对此很感兴趣,但不能从一些反模式开始:/

以下是我发现C#而不是其他语言的答案.

我只是复制/粘贴这些!考虑看看这些评论.


投掷 NullReferenceException

抛出错误的异常:

if (FooLicenceKeyHolder == null)
    throw new NullReferenceException();
Run Code Online (Sandbox Code Playgroud)

属性与公共变量

类中的公共变量(改为使用属性).

除非该类是一个简单的数据传输对象.


不理解bool是一个真正的类型,而不仅仅是一个约定

if (myBooleanVariable == true)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,甚至更好

if (myBooleanVariable != false)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样的结构通常使用CC++开发,其中一个布尔值的想法只是一个约定(0 ==假的,什么都为true); 在C#或其他具有真正布尔值的语言中,这不是必需的(或可取的).


运用 using()

没有using在适当的地方使用:

object variable;
variable.close(); //Old code, use IDisposable if available.
variable.Dispose(); //Same as close.  Avoid if possible use the using() { } pattern.
variable = null; //1. in release optimised away.  2. C# is …
Run Code Online (Sandbox Code Playgroud)

c# anti-patterns

55
推荐指数
21
解决办法
3万
查看次数