小编par*_*ant的帖子

从C#中的List <T>中选择N个随机元素

我需要一个快速算法从通用列表中选择5个随机元素.例如,我想从a获得5个随机元素List<string>.

c# random algorithm collections element

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

何时在C#中使用线程池?

我一直在尝试用C#学习多线程编程,我很困惑什么时候最好使用线程池而不是创建我自己的线程.一本书建议仅为小任务使用线程池(无论这意味着什么),但我似乎无法找到任何真正的指导方针.在做出此编程决策时,您使用了哪些注意事项?

c# multithreading threadpool

126
推荐指数
6
解决办法
7万
查看次数

在visual studio 2013中创建应用程序设置

我已经有一个准备建立的项目.目前,我正在使用visual studio 2013.

但是,我不知道如何在visual studio 2013中创建MSI设置,但是对于visual studio 2010,有很多教程讨论如何在visual studio 2010中创建设置.

  • 这是否意味着我需要安装visual studio 2010才能为我的项目创建应用程序设置?

  • 在visual studio 2013中创建应用程序设置的最简单方法是什么?

c# installation windows-installer visual-studio-2013

90
推荐指数
3
解决办法
15万
查看次数

Double.TryParse或Convert.ToDouble - 哪个更快更安全?

我的应用程序使用VSTO读取Excel文件并将读取的数据添加到StringDictionary.它仅添加具有几位数字的数据(1000 1000,2 1000,34 - 逗号是俄罗斯标准中的分隔符).

最好检查当前字符串是否是合适的数字?

object data, string key; // data had read

try
{
  Convert.ToDouble(regionData, CultureInfo.CurrentCulture);
  dic.Add(key, regionData.ToString());
}
catch (InvalidCastException)
{
  // is not a number
}
Run Code Online (Sandbox Code Playgroud)

要么

double d;
string str = data.ToString();
if (Double.TryParse(str, out d)) // if done, then is a number
{
  dic.Add(key, str);
}
Run Code Online (Sandbox Code Playgroud)

我必须使用StringDictionary而不是Dictionary<string, double>因为以下解析算法问题.

我的问题:哪种方式更快?哪个更安全?

打电话Convert.ToDouble(object)或者打电话会更好Convert.ToDouble(string)吗?

.net c# double parsing

79
推荐指数
6
解决办法
11万
查看次数

VS2010不会在64位版本的Windows上的WinForms应用程序中显示未处理的异常消息

当我创建一个新项目时,我对未处理的异常会有一个奇怪的行为.这就是我可以重现问题的方法:

1)创建一个新的Windows窗体应用程序(C#,. NET Framework 4,VS2010)

2)将以下代码添加到Form1_Load处理程序:

int vara = 5, varb = 0;
int varc = vara / varb;
int vard = 7;
Run Code Online (Sandbox Code Playgroud)

我希望VS中断并在第二行显示未处理的异常消息.但是,会发生的是第三行只是跳过而没有任何消息,应用程序一直在运行.

我现有的C#项目没有这个问题.所以我想我的新项目是用一些奇怪的默认设置创建的.

有没有人知道我的项目有什么问题?

我试过检查Debug-> Exceptions中的方框.但即使我在try-catch块中处理异常,执行也会中断; 这也不是我想要的.如果我没记错的话,在这个对话框中有一个名为"未处理的异常"的列或者类似的东西,这会让我感到非常兴奋.但在我的项目中只有一列("Thrown").

c# exception-handling visual-studio-2010

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

空构造函数或没有构造函数

我认为在类(C#)中使用默认构造函数并不是强制性的.

那么,在那种情况下,我应该在课堂上有一个空构造函数,还是可以跳过它?

拥有一个空的默认构造函数是最佳做法吗?

Class test
{
   public test()
   {

   }
        ......
}
Run Code Online (Sandbox Code Playgroud)

要么

Class test
{
        ......
}
Run Code Online (Sandbox Code Playgroud)

c#

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

如何确保路径中有尾随目录分隔符?

我遇到了问题AppDomain.CurrentDomain.BaseDirectory.

有时路径以'\'结束,有时则不以.我找不到合理的理由.

如果我使用它会没事,Path.Combine但我想做Directory.GetParent,它产生不同的结果.

你有没有发现这个问题?

我可以以不同的方式获取应用程序的父目录吗?

我目前的黑客是:

var baseDir = AppDomain.CurrentDomain.BaseDirectory;
if (!baseDir.EndsWith("\\")) baseDir += "\\";
Run Code Online (Sandbox Code Playgroud)

.net c# path

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

VS2015 MSB3884警告:找不到规则集文件

当我在VS2015中导入旧解决方案时,我收到大量警告MSB3884警告:在构建解决方案时找不到规则集文件.

:我怎样才能摆脱这个恼人的问题?

visual-studio

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

在尝试创建无模式对话框的VBA中使用CreateDialog

我想在VBA 7.0中创建一个无模式弹出对话框.到目前为止,最有希望的路线似乎是CreateDialog.

首先我尝试CreateDialogW并收到了Entry point not found for CreateDialogW in DLL.
打开DLL后,我验证了此功能未列出.上面链接的MSDN参考显示User32作为此函数的DLL并列出函数名称CreateDialogWCreateDialogA(Unicode/ansi),但它们未在我的计算机上的此DLL中列出(Win 7 professional,64bit).

所以,看的是功能列表在DLL中,我看到的CreateDialogParamCreateDialogIndirectParam函数(每ANSI和Unicode版本).

我一直在尝试遵循MSDN并将C示例转换为VB,但我在某处遗漏了某些东西而且我有点卡住,因为我不知道我做错了什么.代码编译并运行没有错误,但API调用没有任何反应 - 它执行但没有任何反应.

如果有人能给我一些正确方向的指示,我将非常感激.我当前的解决方法很糟糕,我真的很想按下这个项目.

Option Explicit

'Reference conversion of C to VB type declarations here
'http://msdn.microsoft.com/en-us/library/aa261773(v=vs.60).aspx

'Declare function to Win API CreateDialog function
'http://msdn.microsoft.com/en-us/library/ms645434(v=vs.85).aspx
Private Declare PtrSafe Function CreateDialog Lib "User32.dll" Alias "CreateDialogParamW" _
                                (ByVal lpTemplateName As LongPtr, _
                                 ByRef lpDialogFunc As DIALOGPROC, _
                                 ByVal dwInitParam As Long, _ …
Run Code Online (Sandbox Code Playgroud)

c++ api vba dialog modeless

34
推荐指数
2
解决办法
1562
查看次数

如何检查Thread是否完成执行

我有以下问题:

我想检查(C#)线程是否已完成执行,即线程方法是否已返回.我现在所做的就是打电话Thread.Join(1),但这会延迟1毫秒.有没有办法简单地检查线程是否已完成.检查Thread.ThreadState似乎太麻烦了.

c# multithreading thread-state

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