Tag: C#的

为什么在哪里和select性能只是select?

我有一个class,就像这样: public class MyClass { public int Value { get; set; } public bool IsValid { get; set; } } 实际上,它的规模要大得多,但是这又重现了这个问题(古怪)。 我想获得实例有效的Value的总和。 到目前为止,我已经find了两个解决scheme。 第一个是这样的: int result = myCollection.Where(mc => mc.IsValid).Select(mc => mc.Value).Sum(); 然而,第二个是这样的: int result = myCollection.Select(mc => mc.IsValid ? mc.Value : 0).Sum(); 我想要得到最有效的方法。 起初,我认为第二个会更有效率。 那么我的理论部分就开始了:“一个是O(n + m + m),另一个是O(n + n),第一个应该用更多的伤害执行,第二个应该更好less“。 我认为他们会performance平等。 编辑:然后@马丁指出,在哪里和select合并,所以它应该实际上是O(M + […]

为什么这个代码容易受到缓冲区溢出攻击?

int func(char* str) { char buffer[100]; unsigned short len = strlen(str); if(len >= 100) { return (-1); } strncpy(buffer,str,strlen(str)); return 0; } 这段代码容易受到缓冲区溢出攻击,我试图找出原因。 我认为这与len被声明为short而不是int ,但是我不确定。 有任何想法吗?

Foreach循环,确定哪个是循环的最后一个迭代

我有一个foreach循环,当从Listselect最后一个项目时,需要执行一些逻辑,例如: foreach (Item result in Model.Results) { //if current result is the last item in Model.Results //then do something in the code } 我可以知道哪个循环是最后一个,而不使用循环和计数器?

“MyClass”的types初始值设定项引发exception

以下是我的Windows服务代码。 当我debugging代码时,我得到了错误/exception: “CSMessageUtility.CSDetails”的types初始值设定项引发exception。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.IO; using System.Threading; using System.Windows; using System.Windows.Forms; using CSMessageUtility; namespace CS_Data_Trasmmiting_Service { public partial class svcCSWinServ : ServiceBase { //private string sLogFormat; //private string sErrorTime; private Thread new_thread; Logger logObject = new Logger(); private bool […]

为什么C ++ rand()似乎只能生成相同数量级的数字?

在用C / C ++编写的一个小应用程序中,我正面临rand函数的问题,可能是种子: 我想产生一系列不同顺序的随机数字,即不同的对数值(基数2)。 但似乎所有的数字都是相同的,在2 ^ 25和2 ^ 30之间波动。 是不是因为rand()是用Unix时间播种,现在是一个相对较大的数字? 我忘了什么 我在main()的开头只播放一次rand() main() 。

抛出HttpResponseException或返回Request.CreateErrorResponse?

在审查了ASP.NET Web API中的一个文章exception处理之后,我对于何时抛出一个exception与返回一个错误响应有点混淆。 我还想知道,当你的方法返回一个域特定的模型而不是HttpResponseMessage时,是否可以修改响应… 所以,这里回顾一下我的问题后面跟一些case #s的代码: 问题 案例#1的问题 我应该总是使用HttpResponseMessage而不是一个具体的域模型,以便消息可以定制? 如果您要返回具体的域模型,可以自定义消息吗? 案件#2,3,4的问题 我应该抛出一个exception还是返回错误响应? 如果答案是“取决于”,你可以给出关于何时使用一个和另一个的情况/例子。 抛出HttpResponseException与Request.CreateErrorResponse什么区别? 输出到客户端似乎相同… 我应该总是使用HttpError来“包装”错误的响应消息(无论是抛出exception还是返回错误响应)? 案例样本 // CASE #1 public Customer Get(string id) { var customer = _customerService.GetById(id); if (customer == null) { var notFoundResponse = new HttpResponseMessage(HttpStatusCode.NotFound); throw new HttpResponseException(notFoundResponse); } //var response = Request.CreateResponse(HttpStatusCode.OK, customer); //response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300)); return customer; } […]

我应该存储整个对象还是指向容器中的对象的指针?

从头开始devise一个新的系统。 我将使用STL来存储特定的长寿命对象的列表和地图。 问题:我应该确保我的对象有复制构造函数,并将对象的副本存储在我的STL容器中,还是自己pipe理生命期和范围通常更好一些,只是将指向这些对象的指针存储在我的STL容器中? 我意识到这在细节方面有些短暂,但是如果存在,我正在寻找“理论”更好的答案,因为我知道这两种解决scheme都是可能的。 玩指针的两个非常明显的缺点:1)我必须在STL之外的范围内自己pipe理这些对象的分配/释放。 2)我不能在堆栈上创build一个临时对象并将其添加到我的容器中。 还有什么我失踪?

为什么C#编译器把这个!=比较翻译成比较呢?

我有纯粹的机会发现,C#编译器转变此方法: static bool IsNotNull(object obj) { return obj != null; } …进入这个CIL : .method private hidebysig static bool IsNotNull(object obj) cil managed { ldarg.0 // obj ldnull cgt.un ret } …或者,如果你喜欢看反编译的C#代码: static bool IsNotNull(object obj) { return obj > null; // (note: this is not a valid C# expression) } 为什么!=被翻译成“ > ”?

为什么书说我必须投malloc?

今天我到了C编程语言(第二版Brian W. Kernighan&Dennis M. Ritchie)的第167页,发现作者说我必须投入malloc 。 这是书中的一部分: 7.8.5存储pipe理 函数malloc和callocdynamic获取内存块。 void *malloc(size_t n) 返回一个指向未初始化存储的n个字节的指针,如果请求不能满足,则返回NULL。 void *calloc(size_t n, size_t size) 为指定大小的n个对象返回一个指向足够空闲空间的指针;如果请求不能满足,则返回NULL。 存储初始化为零。 malloc或calloc返回的指针对于所讨论的对象具有正确的alignment方式,但是必须将其转换为适当的types,如 int *ip; ip = (int *) calloc(n, sizeof(int)); 我已经知道malloc (和它的系列)返回typesvoid * ,并有很好的解释为什么不投出malloc 。 但是我的问题是:为什么这本书说我应该投它?

C#testing用户是否有写入权限的文件夹

我需要testing用户是否可以在实际尝试之前写入文件夹。 我已经实现了以下方法(在C#2.0中),它尝试使用Directory.GetAccessControl()方法检索文件夹的安全权限。 private bool hasWriteAccessToFolder(string folderPath) { try { // Attempt to get a list of security permissions from the folder. // This will raise an exception if the path is read only or do not have access to view the permissions. System.Security.AccessControl.DirectorySecurity ds = Directory.GetAccessControl(folderPath); return true; } catch (UnauthorizedAccessException) { return false; } […]