Tag: C#的

堆栈,静态和堆在C + +

我搜索了,但是我还没有很好地理解这三个概念。 何时必须使用动态分配(在堆中)以及它的真正优势是什么? 什么是静态和堆栈的问题? 我可以编写一个完整的应用程序,而不需要在堆中分配变量吗? 我听说其他语言包含一个“垃圾收集器”,所以你不必担心内存。 垃圾收集器是做什么的? 你可以自己操纵记忆,你不能使用这个垃圾回收器吗? 有人对我说,有了这个声明: int * asafe=new int; 我有一个“指针指针”。 这是什么意思? 它不同于: asafe=new int; ?

在C中,i ++和++ i之间有性能差异吗?

如果不使用结果值, i++和++i之间是否存在性能差异?

使用GCC生成可读的程序集?

我想知道如何在我的C源文件上使用GCC来转储机器代码的助记符版本,这样我就可以看到我的代码被编译进了什么程序。 你可以用Java来做到这一点,但是我一直无法找到GCC的方法。 我正在尝试在汇编中重新编写一个C方法,并且看看GCC是如何提供帮助的。

传递方法作为参数使用C#

我有几个方法都具有相同的签名(参数和返回值),但不同的名称和方法的内部是不同的。 我想传递方法的名称来运行另一个方法,将调用传入的方法。 public int Method1(string) { … do something return myInt; } public int Method2(string) { … do something different return myInt; } public bool RunTheMethod([Method Name passed in here] myMethodName) { … do stuff int i = myMethodName("My String"); … do more stuff return true; } public bool Test() { return RunTheMethod(Method1); } 此代码不起作用,但这是我想要做的。 […]

为什么在遍历2D数组时,循环的顺序会影响性能?

可能重复: 这两个循环中的哪一个在时间和缓存性能方面更有效率 下面是两个几乎相同的程序,只是我切换了i和j变量。 他们都跑了不同的时间。 有人能解释为什么发生这种情况 版本1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < 4000; i++) { for (j = 0; j < 4000; j++) { x[j][i] = i + j; } } } 版本2 #include <stdio.h> #include <stdlib.h> main () { int i,j; static […]

为所有服务器端代码调用ConfigureAwait的最佳实践

当你有服务器端代码(例如一些ApiController )和你的函数是异步的 – 所以它们返回Task<SomeObject> – 当你等待函数调用ConfigureAwait(false) ,是否认为是最佳做法? 我已经读过,它更高性能,因为它不必将线程上下文切换回原始线程上下文。 但是,对于ASP.NET Web Api,如果您的请求在一个线程中进入,并且您正在等待某个函数,并且在您返回ApiController函数的最终结果时调用ConfigureAwait(false) ,这可能会将您置于不同的线程中。 我已经打出了一个我在下面讨论的例子: public class CustomerController : ApiController { public async Task<Customer> Get(int id) { // you are on a particular thread here var customer = await SomeAsyncFunctionThatGetsCustomer(id).ConfigureAwait(false); // now you are on a different thread! will that cause problems? return customer; } }

如何将unique_ptr参数传递给构造函数或函数?

我新移动C ++ 11中的语义,我不知道如何处理构造函数或函数中的unique_ptr参数。 考虑这个引用自身的类: #include <memory> class Base { public: typedef unique_ptr<Base> UPtr; Base(){} Base(Base::UPtr n):next(std::move(n)){} virtual ~Base(){} void setNext(Base::UPtr n) { next = std::move(n); } protected : Base::UPtr next; }; 这是我应该如何编写函数采取unique_ptr参数? 我需要在调用代码中使用std::move吗? Base::UPtr b1; Base::UPtr b2(new Base()); b1->setNext(b2); //should I write b1->setNext(std::move(b2)); instead?

如何保护ASP.NET Web API

我想使用ASP.NET Web API构建一个RESTful Web服务,第三方开发人员将使用它来访问我的应用程序的数据。 我已经阅读了很多关于OAuth的文章 ,这似乎是标准,但是找到一个很好的示例来说明它是如何工作的(而且实际上也行得通!)似乎是非常困难的(尤其是对于OAuth的新手来说)。 是否有一个实际构建和运行的示例,并展示如何实现? 我已经下载了许多样本: DotNetOAuth – 从新手的角度来看,文档是无望的 Thinktecture – 无法建立 我也看过博客提出一个简单的基于令牌的方案(就像这样 ) – 这似乎是重新发明轮子,但它确实具有在概念上相当简单的优点。 似乎有这样的许多问题,但没有好的答案。 大家在这个领域做什么?

C:多个scanf,当我输入一个scanf的值时,它跳过第二个scanf

我有这块代码(功能省略,因为逻辑是作业的一部分): #include <stdio.h> int main() { char c = 'q'; int size; printf("\nShape (l/s/t):"); scanf("%c",&c); printf("Length:"); scanf("%d",&size); while(c!='q') { switch(c) { case 'l': line(size); break; case 's': square(size); break; case 't': triangle(size); break; } printf("\nShape (l/s/t):"); scanf("%c",&c); printf("\nLength:"); scanf("%d",&size); } return 0; } 前两个Scanf的工作很好,没有问题,一旦我们进入while循环,我有一个问题,当你应该被提示输入一个新的形状字符,而是跳转到长度的printf ,并等待从那里输入一个char,然后在循环的下一个循环中输入一个十进制数。 预回圈: Scanf:形状。 很好 Scanf:长度。 没问题 循环1。 Scanf:形状。 跳过这个 Scanf:长度。 问题是,这个scanf映射到char形状。 […]

为什么EF 6教程使用异步调用?

通过如何使用EF 6与MVC 5的最新EF教程似乎倾向于使用asych调用数据库,如: Department department = await db.Departments.FindAsync(id); 这是新标准还是最佳做法? 我不确定这种ASP.NET MVC开发的好处是什么。 有人能评论这个模式吗,这是MS推广的新标准吗?