Tag: C#的

更新OSX上的GCC

所以我是一个新的程序员,我只是在我的Macbook上安装了XCode来获取GCC。 我认为Xcode是在OSX上获得GCC的唯一方法。 现在,当我运行我的Hello World应用程序时,在C ++中,g ++出现了,它是版本4.0.1,但是当我查找以g开头的命令时,我还会看到g ++ – 4.2。 有什么办法使4.2默认,而不是4.0.1,也有办法更新到最新版本4.4.0的gcc? 编辑:好吧,所以我安装了macports并安装了gcc4.4,它显示在terminal上作为gcc-mp-4.4,我怎么让它默认与gcc_select,就像什么是命令和东西。 谢谢。

最干净的方式来调用跨线程事件

我发现.NET事件模型是这样的,我经常在一个线程上引发一个事件,并在另一个线程上监听它。 我想知道从后台线程到我的UI线程编组事件最干净的方法是什么。 根据社区的build议,我用了这个: // earlier in the code mCoolObject.CoolEvent+= new CoolObjectEventHandler(mCoolObject_CoolEvent); // then private void mCoolObject_CoolEvent(object sender, CoolObjectEventArgs args) { if (InvokeRequired) { CoolObjectEventHandler cb = new CoolObjectEventHandler( mCoolObject_CoolEvent); Invoke(cb, new object[] { sender, args }); return; } // do the dirty work of my method here }

signed / unsigned char之间的区别

所以我知道有符号和无符号整数之间的区别是有点用来表示数字是正数还是负数,但是这怎么适用于char? 一个angular色如何能够正面或负面?

如何在没有nuget.exe或Visual Studio扩展的情况下下载Nuget包?

我怎样才能下载一个NuGet包? 我没有NuGet Visual Studio扩展或命令行程序nuget.exe。 我怎样才能从网上下载.nupack文件? 据我所知,我将能够从中提取.dll文件(使用7-zip)以正常使用。 我碰巧感兴趣的包是http://nuget.org/packages/Microsoft.Bcl.Async ,但我想知道如何做到这一点。 在Ruby的世界中,这很容易 – RubyGems网站上的每个包页都有一个到.gem文件的下载链接,例如: https ://rubygems.org/gems/pony 关于NuGet明确命运的论据属于别处。 这个问题没有关系,为什么我不回避。 我不是唯一的一个 。

错误:跳转到案例标签

我写了一个涉及使用switch语句的程序…但是编译时显示: 错误:跳转到案例标签。 为什么这样做? #include <iostream> #include <cstdlib> #include <fstream> #include <string> using namespace std; class contact { public: string name; int phonenumber; string address; contact() { name= "Noname"; phonenumber= 0; address= "Noaddress"; } }; int main() { contact *d; d = new contact[200]; string name,add; int choice,modchoice,t;//Variable for switch statement int phno,phno1; int i=0; int […]

.NET应用程序的连接器状态(又名“请先生,我可以有连接器”2009年版)

这里的许多人可能都熟悉Joel Spolsky最受欢迎的博客文章之一, 请问先生,我可以有一个链接器 ,在那里他要求删除.NET框架上的依赖关系,这样就可以开发一个独立的应用程序,出售。 当时Visual Studio开发团队的Jason Zander 对这个主题提出了自己的观点 ,他认为这个主题有些没有实际意义 – 解决运行时安全问题的能力是其主要的关注点。 总的来说,小的开销是值得的。 快进到2009年。现在有几个团体声称拥有C#连接器。 (Jason Zander甚至说自己不需要太多的实现)。我们现在有了一个大型的200-300 MB跨平台完整的.NET 3.5安装程序,而不是像.NET 1.0那样可爱,十几兆的下载。其中包含用于x86,x64和ia64的.NET版本。 微软对减less运行时间的build议包括: 解压缩可再发行组件,删除不需要的目标平台,然后重新组合 使用仅为您的平台下载库的Web引导程序 使用客户端configuration文件安装程序(2008年末新增),它具有有限的库,只适用于x86 更糟糕的是,据我了解(请纠正我,如果我错了)客户端configuration文件甚至没有注册与Windows 3.5安装.NET 3.5。 这意味着如果在计算机上安装了多个.NET 3.5客户端应用程序,则不会看到对方,并且运行时将被重新安装! 我真的不知道微软在这里想的是什么。 即使假设最糟糕的情况下安装将是针对一个目标平台(例如x64),只有那些库需要包含在内,您仍然需要在应用程序开销60 mb以上。 即使是最知名的.NET应用程序之一,Paint.NET,也充满了安装应用程序的困难,因为.NET依赖性很大。 如果他们在发布免费应用程序时遇到问题,那么世界其他地方呢? 最后,他们不得不安装Microsoft Installer 3.1,.NET运行时引导程序,以及所有其他依赖库,然后才能安装自己的应用程序。 那么怎么样呢。 一个链接器。 是否有任何好的存在 – 或者只是简单地构build一个C#应用程序而不需要用户安装大量.NET运行时的工具? 更新:所以,它看起来像有几个选项: 单声道: 单声道有它自己的链接器 。 从下面的答案看来,它看起来很好。 。净: Xenocode似乎是可用和可用的。 Thinstall是另一个推荐的,它是由VMware。 Remotesoft还有另外一个链接器 。 他们认为这是一个“混淆器”。 那里有任何想法? Rustemsoft发现另一个名为Skater .NET混淆器 。 […]

在.NET中本地存储数据的最佳方法(C#)

我正在编写一个应用程序,将用户数据存储在本地,以备日后使用。 该应用程序将被启动和停止相当频繁,我想使它保存/加载数据在应用程序的开始/结束。 如果我使用平面文件,这将是相当简单的,因为数据并不需要被保护(它只会被存储在这台PC上)。 我相信的select是这样的: 平面文件 XML SQL DB 平面文件需要更多的努力来维护(没有类似于XML的内置类),但是我之前没有使用过XML,而SQL似乎对于这个相对简单的任务来说是过度的。 还有其他的途径值得探索吗? 如果不是,哪个是最好的解决scheme? 编辑:要添加更多的数据的问题,基本上我唯一想要存储的是一个字典,看起来像这样 Dictionary<string, List<Account>> 其中Account是另一个自定义types。 我会序列化字典作为xmlroot,然后帐户types作为属性? 更新2: 所以可以序列化字典。 是什么让它变得复杂的是,这个字典的价值是一个通用的本身,这是一个复杂的数据结构types帐户的列表。 每个帐户都相当简单,只是一堆属性。 这是我的理解,这里的目标是试图结束这个: <Username1> <Account1> <Data1>data1</Data1> <Data2>data2</Data2> </Account1> </Username1> <Username2> <Account1> <Data1>data1</Data1> <Data2>data2</Data2> </Account1> <Account2> <Data1>data1</Data1> <Data2>data2</Data2> </Account2> </Username2> 正如你所看到的那样, 用户名(字典的string)> 帐户(列表中的每个帐户)> 账户数据(即类属性)。 从Dictionary<Username, List<Account>>获得这个布局是棘手的一点,这个问题的本质。 在这里有很多关于序列化的“如何做出”的反应,这是我的错,因为我在一开始就没有把它弄清楚,但现在我正在寻找一个明确的解决scheme。

内存分配:堆栈还是堆?

我对堆栈与堆之间的内存分配基础感到困惑。 根据标准定义(每个人都说),所有的值types将被分配到一个堆栈,并且引用types将被放入堆中 。 现在考虑下面的例子: class MyClass { int myInt = 0; string myString = "Something"; } class Program { static void Main(string[] args) { MyClass m = new MyClass(); } } 现在,如何在C#中发生内存分配? MyClass的对象(即m )是否会被完全分配给堆? 那是int myInt和string myString都会去堆? 或者,该对象将被分成两部分,并且将被分配到两个存储位置,堆栈和堆?

一个“空的”构造函数或析构函数是否和生成的函数一样?

假设我们有一个(玩具)C ++类,如下所示: class Foo { public: Foo(); private: int t; }; 由于没有定义析构函数,因此C ++编译器应该为Foo类自动创build一个。 如果析构函数不需要清理任何dynamic分配的内存(也就是说,我们可以合理地依赖编译器给我们的析构函数),将会定义一个空的析构函数。 Foo::~Foo() { } 做与编译器生成的一样的东西? 什么是空的构造函数 – 也就是Foo::Foo() { } ? 如果有差异,它们在哪里存在? 如果没有,是一种比另一种更受欢迎的方法?

是否有基于任务的替代System.Threading.Timer?

我是.Net 4.0的任务新手,我无法find我认为是基于任务的replace或实现定时器,例如定期任务。 有这样的事吗? 更新我想出了我认为是我的需求的解决scheme,即将“计时器”function包含在任务中,其中子任务全部利用CancellationToken并返回任务以便能够参与进一步的任务步骤。 public static Task StartPeriodicTask(Action action, int intervalInMilliseconds, int delayInMilliseconds, CancellationToken cancelToken) { Action wrapperAction = () => { if (cancelToken.IsCancellationRequested) { return; } action(); }; Action mainAction = () => { TaskCreationOptions attachedToParent = TaskCreationOptions.AttachedToParent; if (cancelToken.IsCancellationRequested) { return; } if (delayInMilliseconds > 0) Thread.Sleep(delayInMilliseconds); while (true) { if (cancelToken.IsCancellationRequested) { […]