Tag: C#的

ASP.NET Web API中的可选参数

我需要实现以下WebAPI方法: /api/books?author=XXX&title=XXX&isbn=XXX&somethingelse=XXX&date=XXX 所有参数都可以为null,即调用者可以从0指定所有5个参数。 在MVC4testing版中,我曾经做过以下操作: public class BooksController : ApiController { // GET /api/books?author=tolk&title=lord&isbn=91&somethingelse=ABC&date=1970-01-01 public string GetFindBooks(string author, string title, string isbn, string somethingelse, DateTime? date) { // … } } MVC4 RC的行为不再这样了。 如果我指定less于5个参数,它回答404说 没有find符合请求的控制器“书籍”的操作。 什么是正确的方法签名,使其行为就像以前一样,而不必在URL路由中指定可选参数?

使用Windows命令提示符安装Windows服务?

我想使用Windows命令提示符(而不是Visual Studio命令提示符)安装Windows服务。 我该怎么做呢?

将筛选器设置为OpenFileDialog以允许使用典型的图像格式?

我有这个代码,我怎么能让它接受所有典型的图像格式? PNG,JPEG,JPG,GIF? 以下是我到目前为止: public void EncryptFile() { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; dialog.InitialDirectory = @"C:\"; dialog.Title = "Please select an image file to encrypt."; if (dialog.ShowDialog() == DialogResult.OK) { //Encrypt the selected file. I'll do this later. 🙂 } } 注意filter被设置为.txt文件。 我可以更改为PNG,但其他types?

在C#中添加一个换行符到一个string

我有一个string。 string strToProcess = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@"; 我需要在每个string中出现“@”符号后添加一个换行符。 我的输出应该是这样的 fkdfdsfdflkdkfk@ dfsdfjk72388389@ kdkfkdfkkl@ jkdjkfjd@ jjjk@

一个快速的方法来解释一个double到一个32位整数

当读Lua的源代码的时候,我注意到Lua使用一个macro来将一个double加到一个32位int 。 我提取macro ,它看起来像这样: union i_cast {double d; int i[2]}; #define double2int(i, d, t) \ {volatile union i_cast u; ud = (d) + 6755399441055744.0; \ (i) = (t)ui[ENDIANLOC];} 这里ENDIANLOC被定义为字节序 , 0表示小端, 1表示大端。 Lua仔细处理sorting。 t表示整数types,如int或unsigned int 。 我做了一点研究,有一个更简单的macro格式,使用相同的想法: #define double2int(i, d) \ {double t = ((d) + 6755399441055744.0); i = *((int *)(&t));} 或者以C ++风格: inline int […]

是161803398“特殊”号码? Math.Random()内部

我怀疑答案是“ 因为math ”,但我希望有人能够在基本层面上多一点洞察力。 我今天在BCL源代码中探索一下,看看我之前使用过的一些类是如何实现的。 我从来没有想过如何生成(伪)随机数,所以我决定看看它是如何完成的。 完整源代码在这里: http : //referencesource.microsoft.com/#mscorlib/system/random.cs#29 private const int MSEED = 161803398; 每次使用Random()类时,都会使用此MSEED值。 无论如何,我看到这个“神奇的数字” – 161803398 – 我不知道为什么这个数字被选中。 这不是一个素数或二的权力。这不是一个数字的“一半”,似乎更重要。 我用二进制和hex来查看它,它对我来说只是一个数字。 我试图在Googlesearch这个号码,但是我什么也没find。

为什么WinRT不受pipe理?

Windows 8引入了WinRT,就像.NET一样,但是不受pipe理。 为什么它是不受pipe理的? 这是一个性能问题? 这是否意味着垃圾收集不适合较低级别的API?

以下LINQ语句如何工作?

以下LINQ语句如何工作? 这是我的代码: var list = new List<int>{1,2,4,5,6}; var even = list.Where(m => m%2 == 0); list.Add(8); foreach (var i in even) { Console.WriteLine(i); } 输出: 2, 4, 6, 8 为什么不是2, 4, 6 ?

为什么在这个C代码中字母分成多个范围?

在自定义库中,我看到了一个实现: inline int is_upper_alpha(char chValue) { if (((chValue >= 'A') && (chValue <= 'I')) || ((chValue >= 'J') && (chValue <= 'R')) || ((chValue >= 'S') && (chValue <= 'Z'))) return 1; return 0; } 这是一个复活节彩蛋还是比标准的C / C ++方法有什么优势? inline int is_upper_alpha(char chValue) { return ((chValue >= 'A') && (chValue <= 'Z')); }

在C#中有一个HashSet的AddRange等价物吗?

有了清单,你可以做: list.AddRange(otherCollection); HashSet中没有添加范围方法。 将另一个集合添加到HashSet的最佳方法是什么?