Tag: C#的

海湾合作委员会,严格的别名,并通过工会铸造

你有什么恐怖的故事要讲? GCC手册最近增加了一个关于“严格别名”和通过工会投射指针的警告: […]考虑地址,转换结果指针和解引用结果具有未定义的行为 [强调添加],即使转换使用联合types,例如: union a_union { int i; double d; }; int f() { double d = 3.0; return ((union a_union *)&d)->i; } 有没有人有一个例子来说明这个未定义的行为? 注意这个问题不是关于什么C99标准说或不说。 这是关于今天gcc和其他现有编译器的实际function。 我只是猜测,但是一个潜在的问题可能在于将d设置为3.0。 因为d是一个永远不会被直接读取的临时variables,并且永远不会通过“有点兼容的”指针读取,所以编译器可能不费心去设置它。 然后f()会从栈中返回一些垃圾。 我简单,天真,尝试失败。 例如: #include <stdio.h> union a_union { int i; double d; }; int f1(void) { union a_union t; td = 3333333.0; return ti; // gcc […]

std :: shared_ptr线程安全

我读过了 即使对象是共享所有权的副本,多个线程也可以同时读写不同的shared_ptr对象。 ( MSDN:标准C ++库中的线程安全 ) 这是否意味着更改shared_ptr对象是安全的? 例如,下一个代码是否被认为是安全的: shared_ptr<myClass> global = make_shared<myClass>(); … //In thread 1 shared_ptr<myClass> private = global; … //In thread 2 global = make_shared<myClass>(); … 我可以肯定,在这种情况下,线程1 private将具有global的原始值或线程2分配的新值,但无论哪种方式将有一个有效的shared_ptr myClass? == ==编辑 只是为了解释我的动机。 我想有一个共享的指针来保存我的configuration,我有一个线程池来处理请求。 所以global是全球configuration。 thread 1正在采取当前configuration,因为它开始处理请求。 thread 2正在更新configuration。 (只适用于未来的请求) 如果工作的话,我可以在不中断请求处理的情况下更新configuration。

从Java调用C#代码?

有没有人有一个很好的解决scheme,将一些C#代码集成到一个Java应用程序? 代码很小,所以我可以用java重新编写代码,但如果可能的话,我宁愿重新使用代码。 不要重复自己,等等 另外,我知道我可以将C#作为一个Web服务或任何其他的东西公开,但是它里面有一些安全/encryption的东西,所以如果可能的话,我宁愿保持它的紧密集成。 编辑:它将在一个基于服务器的应用程序,所以“下载”另一个运行时是无关紧要的。

从types列表中获取IDataReader

我有一个有100万个元素的List<MyObject> 。 (它实际上是一个SubSonic集合,但不从数据库加载)。 我目前正在使用SqlBulkCopy如下: private string FastInsertCollection(string tableName, DataTable tableData) { string sqlConn = ConfigurationManager.ConnectionStrings[SubSonicConfig.DefaultDataProvider.ConnectionStringName].ConnectionString; using (SqlBulkCopy s = new SqlBulkCopy(sqlConn, SqlBulkCopyOptions.TableLock)) { s.DestinationTableName = tableName; s.BatchSize = 5000; s.WriteToServer(tableData); s.BulkCopyTimeout = SprocTimeout; s.Close(); } return sqlConn; } 我使用SubSonic的MyObjectCollection.ToDataTable()从我的集合构buildDataTable。 但是,这会在内存中复制对象,效率低下。 我想使用SqlBulkCopy.WriteToServer方法使用IDataReader而不是DataTable,这样我就不会在内存中复制我的集合。 从列表中获取IDataReader的最简单方法是什么? 我想我可以实现一个自定义的数据阅读器(如这里http://blogs.microsoft.co.il/blogs/aviwortzel/archive/2008/05/06/implementing-sqlbulkcopy-in-linq-to-sql.aspx ) ,但是必须有一些简单的东西,我可以在不编写一堆generics代码的情况下做。 编辑:似乎没有人可以轻松地从一组对象中生成一个IDataReader。 接受当前的答案,即使我希望框架内置的东西。

什么是空指针,什么是空指针?

所以我遇到了一些面试问题,我遇到了这个问题 这个问题的答案彻底让我困惑! 根据这个问题,似乎无效和空可以交替使用,我不相信这是正确的。 我认为无效是一个返回types,空值是一个值。 但是我只是一个代码新手,我不知道我是否正确。 因此,所有的专家在那里..如果你可以摆脱一些光,这将是非常有益的! 🙂 请expression您的意见,什么是空指针和空指针是什么。 不寻找无效之间的区别。 也请validation问题的答案,并告诉我,如果这是正确的…谢谢

C中的types操作符

C是typeof,真的是一个操作符? 我在想,因为C中没有多态,在运行时没有任何事情要做。 也就是说,typeof的答案在编译时是已知的。 (我想不出在编译时就不知道的typeof的用法)。所以它似乎更像是编译时指令,而不是运算符。 typeof使用任何(处理器)运行时(在GCC中)?

是否有可能实现平滑滚动的WPF列表视图?

是否有可能在WPF listview实现平滑滚动,就像它在Firefox中的工作方式一样? 当Firefox浏览器包含所有listview项目,并按住鼠标中键(但不是释放),并拖动它,它应该平滑滚动listview项目。 当你释放它应该停止。 它看起来像这是不可能在winforms,但我想知道,如果它是在WPF中可用?

什么是C中的不透明指针?

可能重复: 什么是不透明的价值? 我可以知道C中不透明指针概念背后的用法和逻辑吗?

识别NHibernate代理类

我不是NHibernate的用户; 我写了一个序列化实用程序库。 用户已经logging了一个function请求,我应该处理NHibernate代理类,将它们与实际types相同。 目前我的代码被视为意外的inheritance,并抛出一个exception。 该代码不会提前知道有关NHibernate(包括没有参考,但我不是反映; -p) 有检测这种代理types的强大/保证的方式? 显然DataContractSerializer处理这个罚款,所以我希望这是非常简单的事情。 也许一些界面或[attribute]装饰。 另外,在反序列化过程中, 此刻我会创build原始types(而不是NHibernatetypes)。 这是为了持久的目的吗? 还是需要代理types? 如果后者; 什么是需要创build一个代理types的实例?

捕获构造函数的初始值设定项列表中的exception

这是一个好奇的。 我有一个类A.它有一个类B的项目,我想要使用一个初始化列表在A的构造函数中初始化,如下所示: class A { public: A(const B& b): mB(b) { }; private: B mB; }; 有没有办法来捕捉exception,可能是由mB的复制构造函数抛出,同时仍然使用初始化列表方法? 或者我必须在构造函数的大括号中初始化mB以获得try / catch?