Tag: C#的

WPF中MVVM的项目结构

在WPF中使用MVVM时,最终的项目结构是什么? 从我现在看到的教程中,他们通常有文件夹:Model,ModelView和View。 在模型中,你把像Person这样的类放在捕获数据和逻辑的地方。 在ModelView中,您可以实例化在Model中定义的类。 该视图包含.xaml文件。 编辑:我编辑我原来的post发送一个示例项目结构。 我有这个问题。 如何组织这些:App.config App.xaml MainWindow.xaml 我应该像现在一样离开他们,还是应该把他们放在一个文件夹里?

在任务中处理exception的正确方法将继续

请看下面的代码 – static void Main(string[] args) { // Get the task. var task = Task.Factory.StartNew<int>(() => { return div(32, 0); }); // For error handling. task.ContinueWith(t => { Console.WriteLine(t.Exception.Message); }, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { Console.WriteLine(t.Result); }, TaskContinuationOptions.OnlyOnRanToCompletion); Console.ReadKey(); Console.WriteLine("Hello"); } private static int div(int x, int y) { if (y == […]

像int(x)这样的声明的目的是什么? 或者int(x)= 10;

如果你*declarator*s in §8/4查看*declarator*s in §8/4语法,你会发现noptr-declarator可以写成( ptr-declarator ),也就是说,它可以写成( declarator-id ),validation标题中的声明。 事实上,这个代码编译没有问题: #include <iostream> struct A{ int i;}; int (x) = 100; A (a) = {2}; int main() { std::cout << x << '\n'; std::cout << ai << '\n'; } 但是,当指针(到数组或函数)不在声明中时,允许这些括号的目的是什么 ?

在C#中部署控制台应用程序的方法

我有一个相对复杂的控制台应用程序依靠几个DLL。 我想以最好的forms“运送”这个。 我最喜欢的方式将是一个exe文件中embedded的所有依赖(不是那么大,约800K)。 另一件事是只压缩“debugging”文件夹的内容,并使其可用,但我不知道是否所有的东西都可以这样(所有的依赖关系只需通过压缩debugging文件夹解决?) 使用VisualStudio 2008部署用C#编写的控制台应用程序有哪些可靠的实践?

堆栈分配,填充和alignment

我一直试图深入了解编译器如何生成机器码,更具体地说,GCC如何处理堆栈。 为此,我一直在编写简单的C程序,将它们编译成程序集,并尽我所能了解结果。 这里有一个简单的程序和它生成的输出: asmtest.c : void main() { char buffer[5]; } asmtest.s : pushl %ebp movl %esp, %ebp subl $24, %esp leave ret 令我费解的是为什么24字节被分配给堆栈。 我知道,由于处理器如何处理内存,堆栈必须以4为增量进行分配,但如果是这种情况,我们应该只将堆栈指针移动8个字节,而不是24个。作为参考,缓冲区为17字节产生一个移动了40个字节的堆栈指针,并且根本没有任何缓冲区移动堆栈指针8.一个1到16字节的缓冲区移动了ESP 24个字节。 现在假定8个字节是一个必要的常量(它需要什么?),这意味着我们正在分配16个字节的块。 为什么编译器会这样调整呢? 我正在使用x86_64处理器,但是即使是64位字也只需要8字节的alignment方式。 为什么这个差距? 作为参考,我正在使用gcc 4.0.1运行10.5的Mac上进行编译,并且没有启用优化。

C ++智能指针const正确性

我在一个类中有几个容器,例如vector或map,其中包含shared_ptr到堆中的对象。 例如 template <typename T> class MyExample { public: private: vector<tr1::shared_ptr<T> > vec; map<tr1::shared_ptr<T> , int> h; }; 我想有一个这个类的公共接口,它有时返回给const对象(通过shared_ptr<const T> ),有时返回shared_ptr<T>我允许调用者mutate对象。 我想要逻辑常量的正确性,所以如果我标记一个方法为const,它不能改变堆上的对象。 问题: 1)我对tr1::shared_ptr<const T>和tr1::shared_ptr<T>的可交换tr1::shared_ptr<const T>困惑。 当有人将shared_ptr<const T> shared_ptr传递给类时,是否将其作为shared_ptr<T>或shared_ptr<const T>在vector和map中,或者是否更改map,vectortypes(例如insert_elemeent( shared_ptr<const T> obj)? 2)更好的实例化类如下: MyExample<const int> ? 这似乎过分限制,因为我永远不会返回一个shared_ptr<int> ?

Linux的C + +:如何configuration时间浪费由于caching未命中?

我知道我可以使用gprof来testing我的代码。 但是,我有这个问题 – 我有一个智能指针有一个额外的间接级别(认为它是一个代理对象)。 结果,我有这个额外的层,影响几乎所有的function,并与caching螺丝。 有没有办法测量我的CPU由于caching未命中而浪费的时间? 谢谢!

现在有二字三字母在使用吗?

鉴于有一次在C和C ++中使用二元字母和三字母的理由, 有没有人把它们写入今天的代码? 是否有任何大量的遗留代码仍在维护中,包含它们? (注意:这里“digraph”并不意味着“有向图” .durraph和trigraph都有多重含义,但是这里的意图是使用??=或者<:来代替#和[

LINUX C中stdout和STDOUT_FILENO的区别

我想知道在Linux中stdout和STDOUT_FILENO之间的区别 经过一番search工作,我得出以下结论。 你能帮我检查一下,纠正它的错误吗? 谢谢 stdout属于C语言的标准I / Ostream; 其types是FILE *并在stdio.h中定义 拥有inttypes的STDOUT_FILENO在unistd.h定义。 这是LINUX系统的文件描述符。 在unistd.h ,解释如下: The following symbolic constants shall be defined for file streams: STDERR_FILENO File number of stderr; 2. STDIN_FILENO File number of stdin; 0. STDOUT_FILENO File number of stdout; 1. 所以,在我看来, STDOUT_FILENO属于系统级调用,在某种程度上就像系统API。 STDOUT_FILENO可以用来描述系统中的任何设备。 stdout位于更高级别(用户级别?),并实际封装了STDOUT_FILENO的详细信息。 stdout具有I / O缓冲区。 这是我了解他们的差异。 任何意见或更正表示赞赏,谢谢。

什么把预编译头? (MSVC)

什么是预编译头文件的最佳候选人? 我可以将STL和Boost标题放在那里,即使它们有模板吗? 这会减less编译时间? 另外,什么是最好的IDE设置来减less编译时间?