Tag: C#的

C ++代码在头文件中

我个人的C ++风格总是把类声明放在一个包含文件中,并且定义在一个.cpp文件中,非常类似于Loki对C ++头文件,代码分离的回答 。 不可否认的是,我喜欢这种风格的部分原因可能与我花费在编码Modula-2和Ada上的所有年份有关,它们都与规范文件和主体文件有相似的scheme。 我有一个同事,比C ++更懂C ++,他坚持所有的C ++声明都应该尽可能在头文件中包含定义。 他并不是说这是一种有效的替代风格,甚至是稍微好一些的风格,但是这是每个人现在都在使用的新的普遍接受的风格。 我不像以前那么灵活,所以我并不急于拼命追赶他,直到我看到更多的人在他身边。 那这个成语真的有多常见? 只是给一些结构的答案:是现在的方式 ,很常见,有点常见,不寻常或错误疯狂?

在对表单应用不透明度的同时,我们应该使用小数还是双精度值?

我想使用一个轨道栏来改变窗体的不透明度。 这是我的代码: decimal trans = trackBar1.Value / 5000; this.Opacity = trans; 当我构build应用程序时,会出现以下错误: 不能隐式地将types'decimal'转换为'double' 。 我尝试使用trans和double但然后控制不起作用。 这个代码在过去的VB.NET项目中工作得很好。

.NET – 将通用集合转换为DataTable

我正在尝试将generics集合(List)转换为DataTable。 我发现下面的代码来帮助我做到这一点: // Sorry about indentation public class CollectionHelper { private CollectionHelper() { } // this is the method I have been using public static DataTable ConvertTo<T>(IList<T> list) { DataTable table = CreateTable<T>(); Type entityType = typeof(T); PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType); foreach (T item in list) { DataRow row = table.NewRow(); foreach (PropertyDescriptor prop in […]

如何从.NET执行SSIS包?

我有一个SSIS包,最终我也想传递参数,这些参数将来自一个.NET应用程序(VB或C#),所以我很好奇,如果有人知道如何做到这一点,或更好的网站有帮助的提示如何做到这一点。 所以基本上我想要从.NET执行一个SSIS包,传递它可以使用的SSIS包参数。 例如,SSIS包将使用平面文件导入到SQL数据库中,但是文件的path和名称可以是从.Net应用程序传递的参数。

我听说我++不是线程安全的,是++我是线程安全的?

我听说i ++不是一个线程安全的语句,因为在汇编时,它减less了将原始值存储为某个临时值,然后将其replace,然后将其replace,这可能会被上下文切换中断。 但是,我想知道关于++我。 据我所知,这将减less到一个单一的汇编指令,如“add r1,r1,1”,因为它只是一个指令,它将不会被上下文切换中断。 任何人都可以澄清? 我假设正在使用一个x86平台。

如何从命令行编译Visual Studio项目?

我正在为使用Monotone , CMake ,Visual Studio Express 2008和自定义testing的大型C ++解决scheme编写签出,构build,分发,testing和提交周期脚本。 所有其他部分看起来非常直截了当,但是我没有看到如何在没有获得GUI的情况下编译Visual Studio解决scheme。 该脚本是用Python编写的,但答案只允许我打电话给:os.system会做。

位移是否依赖于字节序?

假设我有数字'numb'=1025 [00000000 00000000 00000100 00000001]代表: Little-Endian机器上: 00000001 00000100 00000000 00000000 在大端机器上: 00000000 00000000 00000100 00000001 现在,如果我在10位上应用左移(即:numb << = 10),我应该有: [A] Little-Endian机器: 正如我在GDB发现的那样,Little Endian在3个步骤中做了左移:[我已经显示'3'步骤来更好地理解处理] 对待没有。 在大尾巴公约中: 00000000 00000000 00000100 00000001 应用左移: 00000000 00010000 00000100 00000000 用Little-Endian再次表示结果: 00000000 00000100 00010000 00000000 [B]。 在大端机器上: 00000000 00010000 00000100 00000000 我的问题是: 如果我直接在小尾巴公约上应用左移,应该给: numb : 00000001 00000100 00000000 00000000 numb << […]

在C ++中,从函数返回一个向量还是不好的做法吗?

简短版本:在许多编程语言中返回大型对象(如向量/数组)很常见。 如果这个类有一个移动构造函数,或者C ++程序员认为它是奇怪/丑陋/可憎的,现在这种风格现在可以被C ++ 0x接受吗? 长版本:在C + + 0x这是仍然认为不好的forms? std::vector<std::string> BuildLargeVector(); … std::vector<std::string> v = BuildLargeVector(); 传统版本看起来像这样: void BuildLargeVector(std::vector<std::string>& result); … std::vector<std::string> v; BuildLargeVector(v); 在较新的版本中,从BuildLargeVector返回的值是一个右值,因此v将使用std::vector的移动构造函数构造,假设(N)RVO不会发生。 甚至在C ++ 0x之前,由于(N)RVO,第一种forms往往是“高效的”。 但是,(N)RVO由编译器自行决定。 现在我们有了右值引用, 保证不会发生深度复制。 编辑 :问题实际上不是关于优化。 所显示的两种forms在现实世界的程序中都具有几乎相同的性能。 而过去,第一种forms的performance可能会有数量级的下滑。 因此,第一种forms在很长一段时间里是C ++编程中的主要代码异味。 现在不行了,我希望?

C中的目标文件是什么?

我正在阅读关于C语言的库,但是我还没有find关于目标文件的解释。 其他编译文件和目标文件之间的真正区别是什么? 如果有人能用人类的语言来解释我会很高兴。

TypedReference为什么在幕后? 这是如此的快速和安全…几乎是神奇的!

警告:这个问题有点邪教…宗教程序员总是遵守良好的做法,请不要读它。 🙂 有谁知道为什么使用TypedReference是如此的气馁(隐含,由于缺乏文档)? 我发现它有很好的用处,比如当通过不应该是generics的函数传递generics参数时(如果你需要一个值types,使用object可能是矫枉过正或慢),当你需要一个不透明的指针时,或者当您需要快速访问数组的元素时,您可以在运行时查找其规格(使用Array.InternalGetReference )。 由于CLR甚至不允许这种types的不正确的使用,为什么不鼓励? 它似乎不是不安全或任何东西… 我发现TypedReference其他用途: C#中的“专门化”generics(这是types安全的): static void foo<T>(ref T value) { //This is the ONLY way to treat value as int, without boxing/unboxing objects if (value is int) { __refvalue(__makeref(value), int) = 1; } else { value = default(T); } } 编写与generics指针一起工作的代码(如果误用,这是非常不安全的,但是如果使用正确的话,则是快速和安全的): //This bypasses the restriction that you can't have a […]