小编Nic*_*ell的帖子

可以在系统命名空间中编写自己的扩展方法吗?

我最近一直在使用扩展方法,并且发现它们有很多用途.我唯一的问题是记住它们的位置以及使用哪些命名空间来获取扩展方法.

但是,我最近考虑过在System命名空间,System.Collections命名空间或其他一些有意义的系统命名空间中编写扩展方法.例如,我已经实现了以下内容.

namespace System
{
    /// <summary>Various array extensions</summary>
    public static class ArrayExtensions
    {
        /// <summary>Converts the array to a hex string</summary>
        /// <param name="value">The value.</param>
        /// <returns>The array as a hex string</returns>
        public static string ToHexString(this byte[] value)
        {
            var hex = new StringBuilder(value.Length * 2);
            foreach (byte b in value)
            {
                hex.AppendFormat("{0:X2}", b);
            }
            return hex.ToString();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的做法吗?

.net c# extension-methods

21
推荐指数
2
解决办法
2403
查看次数

为什么F#中的printf这么慢?

我对F#的printf有多慢感到惊讶.我有许多C#程序处理大型数据文件并写出许多CSV文件.我最初的fprintf writer "%s,%d,%f,%f,%f,%s"想法是认为这将是简单而合理有效的.

然而,过了一段时间我有点厌倦了等待文件处理.(我有4GB的XML文件可以通过它们写出来.).

当我通过分析器运行我的应用程序时,我惊讶地发现printf是一种非常慢的方法.

我将代码更改为不使用printf,现在性能要好得多.Printf性能破坏了我的整体应用程序性能.

举个例子,我原来的代码是:

fprintf sectorWriter "\"%s\",%f,%f,%d,%d,\"%s\",\"%s\",\"%s\",%d,%d,%d,%d,\"%s\",%d,%d,%d,%d,%s,%d"
    sector.Label sector.Longitude sector.Latitude sector.RNCId sector.CellId
    siteName sector.Switch sector.Technology (int sector.Azimuth) sector.PrimaryScramblingCode
    (int sector.FrequencyBand) (int sector.Height) sector.PatternName (int sector.Beamwidth) 
    (int sector.ElectricalTilt) (int sector.MechanicalTilt) (int (sector.ElectricalTilt + sector.MechanicalTilt))
    sector.SectorType (int sector.Radius)
Run Code Online (Sandbox Code Playgroud)

我已将其改为以下内容

seq {
    yield sector.Label; yield string sector.Longitude; yield string sector.Latitude; yield string sector.RNCId; yield string sector.CellId; 
    yield siteName; yield sector.Switch; yield sector.Technology; yield string (int sector.Azimuth); yield string sector.PrimaryScramblingCode;
    yield string (int sector.FrequencyBand); yield string (int sector.Height); yield …
Run Code Online (Sandbox Code Playgroud)

performance f#

17
推荐指数
4
解决办法
1427
查看次数

我可以在实体框架5中指定localdb数据库的文件名吗?

如果我使用Entity Framework 5和LocalDb,有没有办法在app.config/web.config文件中指定数据库的文件名?

.net entity-framework localdb

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

有没有办法检测系统时钟是否已在Windows中向后更改?

在Windows机器上,有没有办法在不连续监视WM_TIMECHANGE消息的情况下查明时间是否已向后更改?

例如,我想让我的应用程序在启动时做的第一件事是查看自上次运行应用程序以来时间是否已经更改.

据我所知,查看更改的唯一方法是查看WM_TIMECHANGE消息,但我只会看到我的应用程序正在运行.

windows winapi

13
推荐指数
2
解决办法
3万
查看次数

如何计算最接近2或10的幂是多少?

将2或10的最近功率与另一个数字相结合的最有效方法是什么?例如

对于2的幂,3.5将返回4,对于10的幂,则返回1

对于2的幂,123将返回128,对于10的幂,则返回100

对于2的幂,0.24将返回0.25,对于10的幂,则返回0.1

我只是在寻找算法而不介意语言.

algorithm math

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

将纬度和经度转换为双值的最简单方法是什么

我有一个包含纬度和经度值的CSV文件,例如:

"25°36'55.57", "E", "45°39'12.52", "N"

任何人都有一个快速而简单的C#代码将其转换为double值?

谢谢

c# gis

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

如何使用printf样式记录参数创建F#函数?

我正在尝试创建一个框架来处理文件和数据.我正在努力解决的一个领域是如何为框架提供日志记录功能,允许框架在不知道正在使用的日志记录的情况下报告消息.

let testLogger (source:seq<'a>) logger =
    logger "Testing..."
    let length = source |> Seq.length
    logger "Got a length of %d" length


let logger format = Printf.kprintf (printfn "%A: %s" System.DateTime.Now) format
testLogger [1; 2; 3] logger
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望此代码可以工作,但我无法确定如何传递记录器功能.

printf f#

9
推荐指数
2
解决办法
1773
查看次数

在C#中,将成员变量复制到本地堆栈变量是否可以提高性能?

我经常编写将成员变量复制到本地堆栈变量的代码,相信它会通过删除在访问成员变量时必须发生的指针解引用来提高性能.

这有效吗?

例如

public class Manager {
    private readonly Constraint[] mConstraints;

    public void DoSomethingPossiblyFaster() 
    {
        var constraints = mConstraints;
        for (var i = 0; i < constraints.Length; i++) 
        {
            var constraint = constraints[i];
            // Do something with it
        }
    }

    public void DoSomethingPossiblySlower() 
    {
        for (var i = 0; i < mConstraints.Length; i++) 
        {
            var constraint = mConstraints[i];
            // Do something with it
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我的想法是DoSomethingPossiblyFaster实际上比DoSomethingPossiblySlower更快.

我知道这几乎是一个微观优化,但有一个确定的答案是有用的.

编辑 只是为此添加一点背景.我们的应用程序必须处理来自电信网络的大量数据,对于我们的一些服务器,这种方法可能每天被称为大约10亿次.我的观点是每一点都有帮助,有时我想做的就是给编译器一些提示.

c# performance

9
推荐指数
2
解决办法
527
查看次数

Service Fabric可靠队列长操作

我正在尝试了解服务结构的一些最佳实践.

如果我有一个由Web服务或其他机制添加的队列和后端任务来处理该队列,那么在后台处理长时间运行的操作的最佳方法是什么.

  1. 在一个事务,进程中使用TryPeekAsync,然后如果成功使用TryDequeueAsync最终出列.
  2. 使用TryDequeueAsync删除项目,将其放入字典中,然后在完成后从字典中删除.在启动服务时,检查字典以查找队列之前的待处理状态.

两种方式都有点不对劲,但如果有更好的方法我就无法解决.

azure-service-fabric

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

如何在.net应用程序中共享应用程序配置?

我有一个相对较大的.Net系统,它由许多不同的应用程序组成.我想在所有应用程序之间共享一个配置文件,而不是拥有许多不同的app.config文件.

我还想在我的机器上开发一个版本,一个版本供其他人在他们的机器上开发,一个版本用于测试系统,一个版本用于实时系统.

有这么简单的方法吗?

.net c# app-config

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