小编Ita*_*aro的帖子

拳击和拆箱与泛型

.NET 1.0创建整数集合的方法(例如)是:

ArrayList list = new ArrayList();
list.Add(i);          /* boxing   */
int j = (int)list[0]; /* unboxing */
Run Code Online (Sandbox Code Playgroud)

使用它的代价是由于装箱和拆箱而缺乏类型安全性和性能.

.NET 2.0方式是使用泛型:

List<int> list = new List<int>();
list.Add(i);
int j = list[0];
Run Code Online (Sandbox Code Playgroud)

拳击的价格(据我所知)是需要在堆上创建一个对象,将堆栈分配的整数复制到新对象,反之亦然,以便取消装箱.

泛型的使用如何克服这个问题?堆栈分配的整数是否保留在堆栈上并从堆中指向(我想这不是这种情况,因为当它超出范围时会发生什么)?似乎仍然需要将其复制到堆栈外的其他地方.

真的发生了什么?

.net c# generics boxing unboxing

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

高频交易

在过去的几周里,我遇到了很多关于高频交易的文章.他们都谈论计算机和软件对此有多重要,但由于它们都是从财务角度编写的,因此没有关于软件功能的详细信息?

任何人都可以从程序员的角度解释什么是高频交易?为什么计算机/软件在这个领域如此重要?

finance hft

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

C:结构初始化数组的嵌套大括号是如何工作的?

struct mystruct s[10] = {{0}};
Run Code Online (Sandbox Code Playgroud)

这似乎将结构数组初始化为0.嵌套大括号语法如何工作?

c

12
推荐指数
3
解决办法
4092
查看次数

.NET(非可视)组件

我需要创建一个非可视组件,FooComponent它将Bar对其所在类型的所有控件进行一些管理.

我有以下约束:

  1. FooComponent只能添加到表单.
  2. 只有一个FooComponent每形式是允许的.
  3. FooComponent应该注册到表单关闭事件,并在它触发时和所有Bar的函数上发送一些函数,并e.Cancel根据返回的值发送值.

上面的#1和#2应该在运行时和设计时强制执行.#3事件注册应该自动进行,而不是由FooComponent用户进行.

我搜索谷歌和MSDN的一些帮助,阅读ComponentComponentDesigner课程,但我没有找到任何救援.

我该怎么办?

.net c# visual-studio winforms

7
推荐指数
1
解决办法
1090
查看次数

SetWindowsHookEx 与 WH_MOUSE_LL 会使鼠标减慢几秒钟

我正在使用以下代码来获取当前进程的鼠标消息。

using (Process curProcess = Process.GetCurrentProcess())
using (ProcessModule curModule = curProcess.MainModule)
{
    return SetWindowsHookEx(WH_MOUSE_LL, proc, GetModuleHandle(curModule.ModuleName), 0);
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,当此代码运行时,鼠标会变慢几秒钟,然后恢复正常。

有任何想法吗?
谢谢

编辑-挂钩方法

private static IntPtr mouseEvent(int nCode, IntPtr wParam, IntPtr lParam)
{
    if (nCode >= 0 && MouseMessages.WM_LBUTTONDOWN == (MouseMessages)wParam)
    {
        MSLLHOOKSTRUCT hookStruct = (MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT));     
        LastLeftClick = new ClickInfo { Time = DateTime.Now, X = hookStruct.pt.x, Y = hookStruct.pt.y };
    }
    return CallNextHookEx(hookID, nCode, wParam, lParam);
}

public class ClickInfo
{
    public int X { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

c# winapi mouseevent

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

method declared in struct in C++ (STL)

I'm trying to understand the syntax used in STL for a class. Our teacher pointed us to this website (http://www.sgi.com/tech/stl/Map.html) where I copied the code below:

struct ltstr
{
  bool operator()(const char* s1, const char* s2) const
  {
    return strcmp(s1, s2) < 0;
  }
};

int main()
{
  map<const char*, int, ltstr> months;

  months["january"] = 31;
  months["february"] = 28;
  months["march"] = 31;
  months["april"] = 30;
  months["may"] = 31;
  months["june"] = 30;
  months["july"] = 31;
  months["august"] = 31;
  months["september"] …
Run Code Online (Sandbox Code Playgroud)

c++ stl

3
推荐指数
1
解决办法
227
查看次数

如何使用ToString()方法将整数转换为LINQ中的字符串

当我尝试在下面的LINQ Lambda表达式中使用ToString()时,我得到一个异常,说"LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为商店表达式. "

query = query.Where(q => q.date.ToString().Contains(filtertext)
                          || q.invoicenum.ToString().Contains(filtertext)
                          || q.trans_type.ToString().Contains(filtertext)
                          || q.charge.Contains(filtertext));
Run Code Online (Sandbox Code Playgroud)

我正在使用Linq来吸引人.使用的数据库是MySQL而不是SQL Server.立即的帮助将受到高度赞赏.

c# mysql linq entity entity-framework

3
推荐指数
1
解决办法
7026
查看次数

c ++问题中的内存释放(Visual Studio 2010)

我正在尝试学习C++,在这个过程中我试图编写一个函数,它获取两个char指针并将第二个连接到第一个(我知道有strcat这个).
但是 - 我想要完成的是修改第一个参数指针,使其指向结果.因此我在第一个参数中使用了对指针的引用.

在从函数返回之前我想释放第一个参数内存,但是我收到一个错误.

这是代码:

void str_cat(char*& str1, char* str2)
{
 if (!str1)
 {
  str1 = str2;
  return;
 }
 if (!str2)
  return;
 char * new_data = new char[strlen(str1) + strlen(str2) +1];
 char * new_data_index = new_data;
 char * str1_index = str1;
 char * str2_index = str2;

 while(*str1_index)
  *new_data_index++ = *str1_index++;
 while(*str2_index)
  *new_data_index++ = *str2_index++;
 *new_data_index = NULL;

 delete str1; //ERROR HERE (I also tried delete[] str1)

 str1 = new_data;
}
Run Code Online (Sandbox Code Playgroud)

我不懂为什么.
有什么建议?

谢谢,
Itay \

编辑 以下是我如何使用该功能 …

c++ memory-management

-1
推荐指数
1
解决办法
345
查看次数