小编Cod*_*dex的帖子

代码重入与线程安全

"Code Re-entrancy""Thread Safety"的概念有什么区别?根据下面提到的链接,一段代码可以是它们中的任何一个,它们都是,或者都不是.

可重入和线程安全的代码

我无法清楚地理解解释.帮助将不胜感激.

multithreading thread-safety reentrancy

26
推荐指数
2
解决办法
5185
查看次数

读取配置节的通用方法

我试图实现从配置文件中读取节通用方法.配置文件可能包含"标准"部分或"自定义"部分,如下所示.

<configuration> 
<configSections>
    <section name="NoteSettings" type="System.Configuration.NameValueSectionHandler"/>
</configSections>   
<appSettings>
    <add key="AutoStart" value="true"/>
    <add key="Font" value="Verdana"/>
</appSettings>  
<NoteSettings>
    <add key="Height" value="100"/>
    <add key="Width" value="200"/>
</NoteSettings> 
Run Code Online (Sandbox Code Playgroud)

我尝试的方法如下:

    private string ReadAllSections()
    {
        StringBuilder configSettings = new StringBuilder();

        Configuration configFile = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

        foreach (ConfigurationSection section in configFile.Sections)
        {
            configSettings.Append(section.SectionInformation.Name);
            configSettings.Append(Environment.NewLine);                

            if (section.GetType() == typeof(DefaultSection))
            {
                NameValueCollection sectionSettings = ConfigurationManager.GetSection(section.SectionInformation.Name) as NameValueCollection;

                if (sectionSettings != null)
                {
                    foreach (string key in sectionSettings)
                    {
                        configSettings.Append(key);
                        configSettings.Append(" : ");
                        configSettings.Append(sectionSettings[key]);
                        configSettings.Append(Environment.NewLine);
                    }
                }
            } …
Run Code Online (Sandbox Code Playgroud)

.net c# version-control

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

完全由键盘驱动的UI

阅读鼓舞人心的文章我们首先是Jeff 打字员,我决定使用键盘并尽可能远离指针.

但我观察到,对于许多应用程序,特别是在WEB上,这并不容易.

我还试图在我自己的宠物项目中加入这个功能,并意识到需要提前进行大量的UI设计工作.

我以前使用完全由键盘驱动的'windows'应用程序,一旦你掌握了它,它就很容易使用了.客户特别是数据输入运营商只是喜欢它...

我想知道这对于复杂的UI应用程序是否可行,特别是在网络上?努力是否合理?

usability user-interface accessibility

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

递归删除目录中的文件,但保持dir结构不变

为了清理测试文件,我尝试执行以下操作.但它不清除文件以及不生成错误.

我错过了一些明显的东西吗

    private void CleanUpTempDirFiles()
    {
        var fileGenerationDir = new DirectoryInfo(Path.Combine(Path.GetTempPath(), "TestFilesDir"));

        fileGenerationDir.GetDirectories().ToList().ForEach(dir => dir.GetFiles().ToList().ForEach(file => file.Delete()));
    }
Run Code Online (Sandbox Code Playgroud)

.net c# linq linq-to-objects file

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

方法重载行为

我有以下代码示例:

public class Base
{
   public virtual void MyMethod(int param)
    {
        Console.WriteLine("Base:MyMethod - Int {0}", param);
    }
}

public class Derived1 : Base
{
    public override void MyMethod(int param)
    {
        Console.WriteLine("Derived1:MyMethod - Int {0}", param);
    }

    public void MyMethod(double param)
    {
        Console.WriteLine("Derived1:MyMethod - Double {0}", param);
    }
}

class Program
{
    static void Main(string[] args)
    {
        Base objB = new Base();
        objB.MyMethod(5);

        Base objBD = new Derived1();
        objBD.MyMethod(5);

        Derived1 objD = new Derived1();
        objD.MyMethod(5);

        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

上面代码的输出如下:

基地:MyMethod - …

.net c# oop methods

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

ValueType包装器的垃圾收集

ValueType类MSDN链接引用

如果值类型必须像对象一样运行,则在堆上分配使值类型看起来像引用对象的包装器,并将值类型的值复制到其中.标记包装器,以便系统知道它包含值类型.

这意味着我的代码就像"integerVariable.ToString();" 创建的包装器对象允许使用此方法,类似于System.Object的所有其他方法.

这种理解是否正确?

这些对象与"常规"对象有何不同?

垃圾收集是否与此类对象不同?如果有,怎么样?

提前致谢.

.net garbage-collection value-type

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

备用UniqueId生成技术

在应用程序中,当创建特殊类型的对象时,我需要为每个对象生成唯一ID.这些对象是在工厂中创建的,很有可能在"批量"操作中创建.我意识到框架中的"随机"毕竟不是那么"随机",所以我尝试将时间戳添加如下:

private string GenerateUniqueId()
{
    Random randomValue = new Random();
    return DateTime.Now.Ticks.ToString() + randomValue.Next().ToString();
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使这样也行不通.对于快速连续创建的对象,我生成相同的唯一ID :-(

目前,我正在以粗暴的方式实施如下:

private string GenerateUniqueId()
{
    Random randomValue = new Random();
    int value = randomValue.Next();
    Debug.WriteLine(value.ToString());
    Thread.Sleep(100);
    return DateTime.Now.Ticks.ToString() + value.ToString();
}
Run Code Online (Sandbox Code Playgroud)

由于这不是一个非常大的应用程序,我认为一个简单快速的技术就足够了,而不是实现一个复杂的算法.

请建议.

.net c# algorithm

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

在F#中使用管道操作时出现意外的类型编译问题

我正在尝试解析XML文件的目录,然后在给定节点存在时选择特定属性的值.我无法理解以下F#导致的编译错误的原因.

open System
open System.IO
open System.Xml
open System.Xml.XPath
open System.Xml.Linq


let configRootDirectory = @"C:\dir"
let relativeProductDir = @"relDir"

let ExtractConfiguredCalculator (productConfigFile:string) = 
    let xmlNavigator = XPathDocument(productConfigFile).CreateNavigator()
    let node = xmlNavigator.SelectSingleNode(@"Product/SupportedRisk/Risk[@type='PV']") 
    node.GetAttribute("methodology", "")

let configFile = Directory.GetFiles(Path.Combine(configRootDirectory, relativeProductDir), @"*.xml")
                    |> Seq.cast<string>
                    |> Seq.iter(fun configFileName -> ExtractConfiguredCalculator(configFileName))                  
                    |> Seq.filter(fun configuredCalculatorNode -> configuredCalculatorNode != null)
                    |> Seq.iter(fun calculator -> Console.WriteLine(calculator))
Run Code Online (Sandbox Code Playgroud)

上面的代码片段来自我在LinqPad中尝试的代码.看到的错误信息如下.

This expression was expected to have type     unit     but here has type     string   
Run Code Online (Sandbox Code Playgroud)

更新 尝试获得更多f#-ish.如果可以改进,请建议.

let configFile = 
        Directory.GetFiles(Path.Combine(configRootDirectory, relativeProductDir), @"*.xml") …
Run Code Online (Sandbox Code Playgroud)

f# linqpad seq

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