Tag: C#的

在事件派发之前检查null …线程安全吗?

一些让我困惑的东西,但从来没有造成任何问题…推荐的事件派发方式如下: public event EventHandler SomeEvent; … { …. if(SomeEvent!=null)SomeEvent(); } 在multithreading环境中,这段代码如何保证另一个线程不会在检查null和调用事件之间改变SomeEvent的调用列表?

按数值传递一个数组到一个函数

下面是C编程只是常见问题的一个片段。 这是不是错误的数组不能通过引用传递? 八.6:如何通过值传递一个数组到一个函数? 答案:可以通过在被调用的函数中声明带有方括号( [和] )的数组名来在数组中传递数组。 调用该函数时,只需将该数组的地址(即数组的名称)传递给被调用的函数。 例如,以下程序通过值将数组x[]传递给名为byval_func()的函数: int[]参数告诉编译器byval_func()函数将接受一个参数 – 一个整数数组。 当byval_func()函数时,将数组的地址传递给byval_func() : byval_func(x); 因为数组是按值传递的,所以数组的一个精确的拷贝被放在堆栈上。 被调用的函数然后接收这个数组的拷贝并且可以打印它。 因为传递给byval_func()的数组是原始数组的副本,所以在byval_func()函数内修改数组对原始数组没有影响。

从编译的可执行文件获取编译器选项?

有没有办法看到什么编译器和标志被用来创build一个可执行文件* nix? 我有我的代码的旧版本编译,我想看看它是否编译有或没有优化。 谷歌是不是太有用,但我不知道我使用正确的关键字。

std :: function是如何实现的?

根据我发现的来源, lambdaexpression式本质上是由编译器创build一个重载的函数调用操作符和引用的variables作为成员的类来实现的。 这表明lambdaexpression式的大小是变化的,并给出足够大的引用variables,这个variables的大小可以是任意大的 。 一个std::function应该有一个固定的大小 ,但它必须能够包装任何种类的可调用,包括任何types的lambda。 它是如何实现的? 如果std::function内部使用一个指向它的目标的指针,那么当std::function实例被复制或移动时会发生什么? 有涉及堆分配吗?

在Windows中创build一个临时目录?

在Windows中获取临时目录名称的最佳方法是什么? 我看到,我可以使用GetTempPath和GetTempFileName来创build一个临时文件,但是有没有任何等同于Linux / BSD mkdtemp函数来创build一个临时目录?

“不命名types”错误

我有两个类声明如下: class User { public: MyMessageBox dataMsgBox; }; class MyMessageBox { public: void sendMessage(Message *msg, User *recvr); Message receiveMessage(); vector<Message> *dataMessageList; }; 当我尝试使用gcc进行编译时,会出现以下错误: MyMessageBox不会命名一个types

LINQ,Where()与FindAll()

有人可以解释LINQ函数在哪里(..)和FindAll(..)有什么不同? 他们似乎都做同样的事情…

转换和使用Convert.To()方法之间的区别

我有一个函数,在string值上施加一个double string值。 string variable = "5.00"; double varDouble = (double)variable; 代码更改已签入并且项目生成错误: System.InvalidCastException: Specified cast is not valid. 但是,在做了以下… string variable = "5.00"; double varDouble = Convert.ToDouble(variable); 这个项目没有任何错误 转换和使用Convert.To()方法有什么区别? 为什么抛出一个Exception并使用Convert.To()不?

在unit testing中使用WPF Dispatcher

我很难让分派器运行一个委托,我unit testing时传递给它。 运行程序时一切正常,但在unit testing期间,以下代码将不会运行: this.Dispatcher.BeginInvoke(new ThreadStart(delegate { this.Users.Clear(); foreach (User user in e.Results) { this.Users.Add(user); } }), DispatcherPriority.Normal, null); 我有这个代码在我的viewmodel基类来得到一个分派器: if (Application.Current != null) { this.Dispatcher = Application.Current.Dispatcher; } else { this.Dispatcher = Dispatcher.CurrentDispatcher; } 有什么我需要做的初始化单位testing分派器? 分派器从不运行委托中的代码。

如何为静态variables分配内存?

在下面的程序中: class Main { static string staticVariable = "Static Variable"; string instanceVariable = "Instance Variable"; public Main(){} } instanceVariable将存储在分配给对象实例的内存中。 staticVariable存储在哪里,它存储在对象实例本身还是其他地方? 如果将其存储在其他地方,则存储位置如何连接?