小编Hos*_*Aly的帖子

如果(条件)继续; 或者if(!condition){...}?(风格偏好)

我知道这是一个风格问题,因此是主观标签.我有一小段代码,有两个嵌套条件.我可以用两种方式对它进行编码,我希望看到更有经验的开发人员认为它应该是什么样子.

风格1:

while (!String.IsNullOrEmpty(msg = reader.readMsg()))
{
    RaiseMessageReceived();
    if (parseMsg)
    {
        ParsedMsg parsedMsg = parser.parseMsg(msg);
        RaiseMessageParsed();
        if (processMsg)
        {
            process(parsedMsg);
            RaiseMessageProcessed();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

风格2:

while (!String.IsNullOrEmpty(msg = reader.readMsg()))
{
    RaiseMessageReceived();
    if (!parseMsg) continue;

    ParsedMsg parsedMsg = parser.parseMsg(msg);
    RaiseMessageParsed();
    if (!processMsg) continue;

    process(parsedMsg);
    RaiseMessageProcessed();
}
Run Code Online (Sandbox Code Playgroud)

(附带问题:如何在源代码示例中放置空行?)

coding-style

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

我在哪里可以下载NetBeans附带的"appframework.jar"的来源?

我刚刚开始尝试NetBeans.我创建了一个新的Java桌面应用程序项目,它自动添加了JDesktop"appframework-1.0.3.jar"库.但是,每当我尝试查看其源时,该命令都会失败.我尝试在线搜索,但我找不到它.那么我在哪里可以下载"Swing应用程序框架"(appframework.jar和swing-worker.jar)的源代码?

java netbeans jdesktop

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

`using`指令的位置是否会对C#产生影响?

我在尝试对现有代码进行格式化时遇到错误.最初,代码具有using在命名空间外声明的指令:

using System.Collections.Generic;
namespace MyNamespace
{
    using IntPair = KeyValuePair<int, int>;
}
Run Code Online (Sandbox Code Playgroud)

当我试图using在语句中插入指令(以符合StyleCop的规则)时,我在别名指令中遇到错误,我必须完全限定它:

namespace MyNamespace
{
    using System.Collections.Generic;
    //using IntPair = KeyValuePair<int, int>;   // Error!
    using IntPair = System.Collections.Generic.KeyValuePair<int, int>; // works
}
Run Code Online (Sandbox Code Playgroud)

我想知道两种情况之间有什么区别?(import-style)using指令的位置是否重要?

c# syntax

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

我可以在不指定数字的情况下将参数传递给String.Format吗?

有没有办法在String.Format没有指定{1}, {2},等的情况下发送消息?是否可以采用某种形式的自动增量?(与普通老年人相似printf)

.net c# string formatting

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

为什么我的C#方法没有被调用?

为什么X下面的方法没有被调用?!

static class Program
{
    private static void Main()
    {
       X((IEnumerable<int>)null);
    }

    public static IEnumerable<T> X<T>(IEnumerable<T> e)
    {
        if (e == null)
            throw new ArgumentNullException();
        yield break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试着踩到调试器但它没有进入X!yield break关键字是否会引起一些我不知道的副作用?

如果值得,我将使用Visual Studio 2008 Express和.NET 3.5 SP1.

.net c#

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

如何让Windows打印文档?

我想(以编程方式)打印各种类型的文档,要求Windows执行它(使用默认的关联应用程序).我该怎么做(在.NET或C++/Win32 API中)?

例如,如果我在机器上安装了MS Office和Acrobat Reader,则应使用Acrobat Reader打印PDF文件,并且应使用MS Word打印DOC文件.但是,如果我没有安装MS Office,则应使用Wordpad或OpenOffice.org Writer(如果安装了后者)或任何应用程序当前是该类型文件的默认关联来打印DOC文件.

.net c# c++ windows winapi

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

如何将通用List <T>转换为List?

如何将通用列表转换为列表?

我正在使用一个ListCollectionView,我需要提供一个IList而不是IList<T>.

我看到很多例子可以将ILista 转换为a IList<T>,但不是其他方式.

我只是手动转换它(new List().AddRange(IList<T>)?

c# generics

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

如何通过电子邮件发送 Cloudwatch 日志详细信息?

下图是我想要实现的目标。简而言之,将 CloudTrail 日志发送到 CloudWatch 日志组,然后扫描其中的某些事件,最后在发生一致事件时发送电子邮件警报。

CloudTrail 发送警报

我正在关注这个官方文档,它也有一个示例 CloudFormation 模板: http //docs.aws.amazon.com/awscloudtrail/latest/userguide/use-cloudformation-template-to-create-cloudwatch-alarms.html

使用上面的 CloudFormation 模板,我已经能够发送电子邮件警报。然而,警报是非常基本的;它不会发送关键信息,比如哪个用户发起了这个事件,什么时候发生的等等。

逻辑思维AWS::Logs::MetricFilter应该传递值AWS::CloudWatch::Alarm,然后将信息发送到该值。我已经查看了两者MetricFilterAlarm服务的文档。Dimension更接近我想要的但还不能从日志中读取信息。

我会认为这是一个常见的用例,并且会有文档。我在这里遗漏了一些明显的东西吗?这里有人解决过这个问题吗?

AWS::Logs::MetricFilter 堵塞:

"AuthorizationFailuresMetricFilter": {
    "Type": "AWS::Logs::MetricFilter",
    "Properties": {
        "LogGroupName": { "Ref" : "LogGroupName" },
        "FilterPattern": "{ ($.errorCode = \"*UnauthorizedOperation\") || ($.errorCode = \"AccessDenied*\") }",
        "MetricTransformations": [
            {
                "MetricNamespace": "CloudTrailMetrics",
                "MetricName": "AuthorizationFailureCount",
                "MetricValue": "1"
            }
        ]
    }
},
Run Code Online (Sandbox Code Playgroud)

AWS::CloudWatch::Alarm 堵塞

  "AuthorizationFailuresAlarm": {
      "Type": "AWS::CloudWatch::Alarm",
      "Properties": {
          "AlarmName" : "CloudTrailAuthorizationFailures",
          "AlarmDescription" : "Alarms when an unauthorized API …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation amazon-cloudwatch amazon-cloudtrail amazon-cloudwatchlogs

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

String.IndexOf(char)真的比手动搜索慢吗?

在进行简单的性能测量时,我惊讶地发现调用String.IndexOf(char)实际上比手动调用慢!这是真的吗?!这是我的测试代码:

const string str = @"91023m lkajsdfl;jkasdf;piou-09324\\adf \asdf\45\ 65u\ 86\ 8\\\;";
static int testIndexOf() { return str.IndexOf('\\'); }
static int testManualIndexOf() {
    string s = str;
    for (int i = 0; i < s.Length; ++i)
        if (s[i] == '\\') return i;
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

我运行了每种方法2500万次,并使用a测量时间Stopwatch.手动版本的速度始终比另一个版本快25%.

有什么想法吗?!


编辑2:使用.NET 4.0在另一台机器上运行测试产生的结果与Marc Gravell的答案非常相似.比手动搜索更快.String.IndexOf(char)


编辑:今天(2009年1月4日)我想以更全面的方式检查这个问题,所以我创建了一个新项目,并编写了您将在下面找到的代码.从cmd运行发布模式进行1亿次迭代时,我得到以下结果:

  -   String.      IndexOf : 00:00:07.6490042
  - MyString.PublicIndexOf : 00:00:05.6676471
  - MyString.InternIndexOf : 00:00:06.1191796
  - MyString.PublicIndexOf2: 00:00:09.1363687
  - MyString.InternIndexOf2: 00:00:09.1182569
Run Code Online (Sandbox Code Playgroud)

我运行这些测试至少20次,每次都得到几乎相同的结果.我的机器是XP SP3,VS …

.net string performance

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

为什么在.NET中复制字符串?

由于字符串在.NET中是不可变的,为什么它们被复制用于简单的操作,如SubstringSplit?例如,通过保持char[] value,int start并且int length,一个串可以创建简单地指向一个现有的字符串,我们可以节省复制了许多简单的操作字符串的开销.所以我想知道,为什么选择复制字符串进行此类操作?

例如,这样做是为了支持当前的实施StringBuilder吗?或者char[]当只需要几个字符时,为了避免保留对大的引用?或者你能想到的任何其他原因?你能为这种设计提出利弊吗?

正如@cletus所提到并得到@Jon Skeet的支持,这更像是在问这个方面为什么.NET字符串与Java不同.

.net string

4
推荐指数
2
解决办法
365
查看次数