Tag: C#的

在C ++中编码/解码URL

有谁知道任何好的C ++代码,这样做?

是无符号整数减法定义的行为?

我遇到过一些人的代码,他们似乎认为在结果为负数时,从另一个相同types的整数中减去一个无符号整数是有问题的。 所以这样的代码即使发生在大多数架构上也不正确。 unsigned int To, Tf; To = getcounter(); while (1) { Tf = getcounter(); if ((Tf-To) >= TIME_LIMIT) { break; } } 这是我能find的C标准中唯一相关的引用。 涉及无符号操作数的计算永远不会溢出,因为无法用结果无符号整数types表示的结果被减less的模数大于可由结果types表示的最大值的数。 我想可以把这个引号的意思是,当右操作数较大时,操作被调整为在模截断数的上下文中是有意义的。 即 0x0000 – 0x0001 == 0x 1 0000 – 0x0001 == 0xFFFF 而不是使用实现相关的签名语义: 0x0000 – 0x0001 ==(无符号)(0 + -1)==(0xFFFF也是0xFFFE或0x8001) 哪个或哪个解释是正确的? 它是否定义?

.NET内存不足例外 – 使用1.3GB,但安装了16GB

当应用程序的内存使用量超过了大约1.3GB时,我在c#应用程序中出现了“内存不足”exception。 在一台拥有3GB内存的32位机器上,我遇到了同样的问题,当时我觉得这很有意义,但是现在我把硬件升级到了一个64位的机器,内存为16GB,高端主板和内存,但是内存不足在1.3GB之后仍然出现exception! 我知道没有超过2GB的单个对象,而1.3的数据less于2GB,所以单个对象的内置MS 2GB限制不太可能成为问题。 它似乎有一个窗口kill-switch某种应用程序达到一定的内存使用阈值…然后应该有一种方法来configuration这是在registry也许? 任何帮助将不胜感激!

长期在C / C ++

我正在GNU的C ++编译器上试试这个代码,我无法理解它的行为: #include <stdio.h>; int main() { int num1 = 1000000000; long num2 = 1000000000; long long num3; //num3 = 100000000000; long long num4 = ~0; printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3)); printf("%d %ld %lld %llu", num1, num2, num3, num4); return 0; } 当我取消评论行的注释时,代码不会编译并提供错误: 错误:对于长types,整数常量太大 但是,如果代码是按原样编译并执行的,则会产生比10000000000大的值。 为什么?

remove_if相当于std :: map

我试图根据特定的条件从地图中删除一系列元素。 我如何使用STLalgorithm做到这一点? 最初我想过使用remove_if但是这是不可能的,因为remove_if不适用于关联容器。 有没有任何“remove_if”等效algorithm适用于map? 作为一个简单的选项,我想通过循环地图和擦除。 但是通过地图循环并擦除一个安全的选项?(因为迭代器在擦除后变得无效) 我用下面的例子: bool predicate(const std::pair<int,std::string>& x) { return x.first > 2; } int main(void) { std::map<int, std::string> aMap; aMap[2] = "two"; aMap[3] = "three"; aMap[4] = "four"; aMap[5] = "five"; aMap[6] = "six"; // does not work, an error // std::remove_if(aMap.begin(), aMap.end(), predicate); std::map<int, std::string>::iterator iter = aMap.begin(); std::map<int, std::string>::iterator […]

在范围内生成一个随机数?

可能重复: 在Objective-C中生成随机数 如何生成一个范围内的随机数字?

从另一个线程写入文本框?

我无法弄清楚如何使一个C#Windows窗体应用程序写入一个线程的文本框。 例如在Program.cs中,我们有标准的main()来绘制表单: static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } 然后我们在Form1.cs中: public Form1() { InitializeComponent(); new Thread(SampleFunction).Start(); } public static void SampleFunction() { while(true) WindowsFormsApplication1.Form1.ActiveForm.Text += "hi. "; } 我是否完全错误? UPDATE 这里是从bendewey提供的工作代码示例: public partial class Form1 : Form { public Form1() { InitializeComponent(); new Thread(SampleFunction).Start(); } public void AppendTextBox(string value) { if (InvokeRequired) { […]

C#.Equals(),.ReferenceEquals()和==运算符

我对这三个人的理解是: .Equals()testing数据是否相等(缺less更好的描述)。 .Equals()可以为同一个对象的不同实例返回True,这是最常用的重写方法。 .ReferenceEquals()testing两个对象是否是同一个实例,不能被覆盖。 ==默认情况下与ReferenceEquals()相同,但是这个可以被覆盖。 但是C#站点状态: 在对象类中, Equals和ReferenceEquals方法在语义上是等价的,只不过ReferenceEquals只对对象实例起作用。 ReferenceEquals方法是静态的。 现在我不明白。 任何人都可以点亮这个?

在.NET / C#中如何获得刻度精度的时间戳?

到目前为止,我使用DateTime.Now来获取时间戳,但是我注意到如果你在一个循环中打印DateTime.Now ,你会发现它在大约的离散跳跃中增加。 15毫秒 但是对于我的应用程序中的某些场景,我需要获得最准确的时间戳,最好是使用tick(= 100 ns)精度。 有任何想法吗? 更新: 显然, StopWatch / QueryPerformanceCounter是要走的路,但它只能用于测量时间,所以我想在调用DateTime.Now时,应用程序启动,然后只有StopWatch运行,然后只是添加从StopWatch经过的时间从DateTime.Now返回的初始值。 至less应该给我准确的相对时间戳,对吗? 你怎么看待这个(黑客)? 注意: StopWatch.ElapsedTicks与StopWatch.Elapsed.Ticks不同! 我用前者假设1 tick = 100 ns,但在这种情况下1 tick = 1 / StopWatch.Frequency 。 所以要得到相当于DateTime的滴答使用StopWatch.Elapsed.Ticks 。 我刚刚学会了这个难题。 笔记2: 使用StopWatch方法,我发现它与实时不同步。 大约10个小时之后,它超前了5秒。 所以我想我们不得不重新同步每X左右,其中X可能是1小时30分钟,15分钟等我不知道什么是最佳时间resyncing将是因为每个resync会改变偏移量可以是最多20毫秒。

无法使用Json序列化Web API中的响应

我正在使用ASP.NET MVC 5 Web Api。 我想咨询我所有的用户。 我写:api / users和我收到这个: “'ObjectContent`1'types未能序列化内容types'application / json; charset = utf-8'的响应主体 在WebApiConfig中,我已经添加了这几行: HttpConfiguration config = new HttpConfiguration(); config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType); config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; 但仍然不起作用 我的函数返回数据是这样的: public IEnumerable<User> GetAll() { using (Database db = new Database()) { return db.Users.ToList(); } }