Tag: C#的

什么“编译时分配的内存”真的意味着什么?

在像C和C ++这样的编程语言中,人们通常会引用静态和dynamic内存分配。 我理解这个概念,但是“在编译期间所有内存被分配(保留)”这句话总是令我困惑。 据我了解,编译将高级C / C ++代码转换为机器语言并输出可执行文件。 如何在编译的文件中“分配”内存? 是不是所有的虚拟内存pipe理的东西内存总是分配在内存中? 内存分配是不是定义一个运行时的概念? 如果我在我的C / C ++代码中创build一个1KB的静态分配的variables,是否会增加相同数量的可执行文件的大小? 这是在“静态分配”标题下使用短语的页面之一。 回到基础:内存分配,走下历史

在C中通过结构传递结构有什么缺点,而不是传递一个指针?

在C中通过结构传递结构有什么缺点,而不是传递一个指针? 如果结构很大,显然有复制大量数据的性能方面,但是对于一个较小的结构,它应该基本上是将多个值传递给一个函数。 用作返回值可能更有趣。 C只有函数的单个返回值,但是你经常需要几个。 所以一个简单的解决scheme是把它们放在一个结构中并返回。 这有什么理由吗? 由于这里可能不太清楚我在说什么,我将举一个简单的例子。 如果你用C编程,你迟早会开始编写如下的函数: void examine_data(const char *ptr, size_t len) { … } char *p = …; size_t l = …; examine_data(p, l); 这不是问题。 唯一的问题是,你必须同意你的同事参数的顺序,所以你在所有的function使用相同的约定。 但是当你想要返回相同types的信息时会发生什么? 你通常得到这样的东西: char *get_data(size_t *len); { … *len = …datalen…; return …data…; } size_t len; char *p = get_data(&len); 这工作正常,但更多的问题。 返回值是一个返回值,除了在这个实现中它不是。 上面没有办法告诉我们函数get_data不允许查看len指向的内容。 没有什么能够使编译器检查一个值是否通过该指针实际返回。 那么下个月,当别人修改代码而不正确地理解代码(因为他没有阅读文档?)它会被打破,没有任何人注意到,或者随机开始崩溃。 所以,我提出的解决scheme是简单的结构 struct […]

通过数字索引访问Dictionary.Keys键

我正在使用Dictionary<string, int> ,其中int是键的计数。 现在,我需要访问Dictionary中最后插入的Key,但是我不知道它的名字。 显而易见的尝试: int LastCount = mydict[mydict.keys[mydict.keys.Count]]; 不起作用,因为Dictionary.Keys不实现[] -indexer。 我只是想知道有没有类似的课程? 我想过使用堆栈,但只存储一个string。 我现在可以创build自己的结构,然后使用Stack<MyStruct> ,但是我想知道是否有另一种替代scheme,本质上是一个在Keys上实现[] -indexer的Dictionary?

fprintf,printf和sprintf之间的区别?

任何人都可以用简单的英语解释printf , fprintf和sprintf与例子之间的区别吗? 它在哪里? 在阅读“C中的文件处理”时,我对这三者之间真的感到困惑。

是否有一个C#区分大小写的等号运算符?

我知道以下区分大小写: if (StringA == StringB) { 那么是否有一个运算符会以不敏感的方式比较两个string?

函数声明不是原型

我有一个我创build的图书馆, mylib.c: #include <mylib.h> int testlib() { printf("Hello world\n"); return (0); } mylib.h: #include <stdio.h> extern int testlib(); 在我的程序中,我试图调用这个库函数: myprogram.c: #include <mylib.h> int main (int argc, char *argv[]) { testlib(); return (0); } 当我试图编译这个程序时,我得到以下错误: 从myprogram.c包含的文件中:1 mylib.h:2警告:函数声明不是原型 我正在使用: gcc (GCC) 3.4.5 20051201 (Red Hat 3.4.5-2) 我的问题是,声明函数原型的正确方法是什么?

新的事务是不允许的,因为会话中有其他线程正在运行LINQ To Entity

任何想法,为什么这可能会打破? foreach (var p in pp) { ProjectFiles projectFile = (ProjectFiles)p; projectFile.Status = Constants.ProjectFiles_ERROR; projectFile.DateLastUpdated = DateTime.Now; context.SaveChanges(); } 我读过这个问题的解决方法,是在foreach循环之前一次检索结果。 但我没有那样做? “pp”是我收集的结果

Application_Start不开火?

我有一个ASP.NET MVC(testing版)应用程序,我正在工作,并无法弄清楚,如果我做错了什么,或者如果我在Global.asax.cs中的Application_Start方法实际上是不会触发,当我尝试debugging应用程序。 我在我的Application_Start方法的一行放置了一个断点,并期望当我试图debugging应用程序断点应该被打…但它永远不会。 不是在我重新启动IIS之后,不是在我重新启动后,没有。 我错过了什么吗? 为什么这个方法永远不会被调用?

如果创build目录不存在创build文件?

如果目录不存在,我在这里有一段代码: System.IO.File.WriteAllText(filePath, content); 在一行(或几行)中,是否可以检查通向新文件的目录是否不存在,如果不存在,在创build新文件之前创build它? 我正在使用.NET 3.5。

如何为我的HttpClient PostAsync第二个参数设置HttpContent?

public static async Task<string> GetData(string url, string data) { UriBuilder fullUri = new UriBuilder(url); if (!string.IsNullOrEmpty(data)) fullUri.Query = data; HttpClient client = new HttpClient(); HttpResponseMessage response = await client.PostAsync(new Uri(url), /*expects HttpContent*/); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); return responseBody; } PostAsync需要另一个需要HttpContent参数。 我如何设置一个HttpContent ? 没有任何文档适用于Windows Phone 8。 如果我做GetAsync ,它工作得很好! 但是它需要POST的内容为key =“bla”,something […]