Tag: C#的

为什么从C ++ 11中删除对范围访问?

我刚刚发现,C ++ 11草案有一个std::begin / std::end重载std::pair ,允许将一对迭代器视为适合在基于范围的for循环中使用的范围(N3126,第20.3.5.5节),但是这已经被删除。 有谁知道为什么它被删除? 我发现删除非常不幸,因为它似乎没有其他的方式来处理一对迭代器作为范围。 确实: 在基于范围的for循环中,begin / end的查找规则表示在1)中将begin / end作为范围对象的成员函数2)作为“关联名称空间”中的自由函数进行查找 std::pair没有开始/结束成员函数 std::pair<T, U>唯一相关的命名空间通常是命名空间std 我们不允许自己为std::pair加载std::begin / std::end 我们不能将std::begin / std::end专门化为std::pair (因为专精必须是部分的,而且不允许用于函数) 有没有其他的方式,我失踪了?

用C#编码CUDA?

我一直在寻找一些关于用C#编码CUDA(nvidia gpu语言)的信息。 我已经看到了一些库,但似乎会增加一些开销(因为p /调用等)。 我应该如何在C#应用程序中使用CUDA? 用C ++编写代码并编译成dll会更好吗? 使用包装的这种开销是否会丧失使用CUDA的优势? 有C#使用CUDA的好例子吗?

Thread.Sleep与Task.Delay?

我知道Thread.Sleep阻塞一个线程。 但是, Task.Delay也阻止? 还是它就像Timer使用一个线程的所有callback(当不重叠)? ( 这个问题不包括差异)

MOQ文件在哪里?

我在哪里可以find全面的MOQ文件? 我刚刚开始嘲笑,难以得到我的头。 我已阅读http://code.google.com/p/moq/wiki/QuickStart上的所有链接,但似乎无法find教程或简单介绍。 我也简单地看过Rhino Mocks,但发现它很混乱。 是的 – 我读斯蒂芬·沃尔瑟斯的文章 – 非常有帮助。 我也通过链接。 我似乎无法在http://www.bestechvideos.com/2008/06/08/dimecasts-net-introduction-to-mocking-with-moq观看video[断开链接] 具体来说,我试图确定一个事件是否是从嘲笑类中提出的。 我无法获得QuickStarts页面上的事件示例来编译。 在google组上,Daniel解释说CreateEventHandler只能处理EventHandlertypes的事件,但即使如此,我也无法获得编译的代码。 更具体地说,我有一个实现INotifyChanged的类。 public class Entity : INotifyChanged { public event PropertyChangingEventHandler PropertyChanging; public int Id { get {return _id;} set { _id = value; OnPropertyChanged("Id"); } } protected void OnPropertyChanged(string property) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } 等….. […]

如何通过拖动扩展窗口框架来移动WPF窗口?

在Windows资源pipe理器和Internet Explorer等应用程序中,可以抓取标题栏下面的扩展框架区域并拖动窗口。 对于WinForms应用程序,表单和控件尽可能接近本机Win32 API; 我们可以简单地重写WndProc()处理程序,处理WM_NCHITTEST窗口消息,并诱使系统认为点击框架区域是通过返回HTCAPTION实际上是标题栏上的HTCAPTION 。 我已经在我自己的WinForms应用程序中做到了这一点,以达到愉快的效果。 在WPF中,我还可以实现一个类似的WndProc()方法,并将其挂接到我的WPF窗口的句柄,同时将窗口框架延伸到客户区,如下所示: // In MainWindow // For use with window frame extensions private IntPtr hwnd; private HwndSource hsource; private void Window_SourceInitialized(object sender, EventArgs e) { try { if ((hwnd = new WindowInteropHelper(this).Handle) == IntPtr.Zero) { throw new InvalidOperationException("Could not get window handle for the main window."); } hsource = […]

静态constexprvariables与function

将浮点常量声明为static constexprvariables和下面的例子中的函数是否有区别?还是仅仅是风格问题? class MY_PI { public: static constexpr float MY_PI_VAR = 3.14f; static constexpr float MY_PI_FUN() { return 3.14f; } }

如何获取NameValueSectionHandlertypes的ConfigurationSection的值

我正在使用C#,Framework 3.5(VS 2008)。 我正在使用ConfigurationManager将configuration(不是默认的app.config文件)加载到configuration对象中。 使用configuration类,我能够得到一个ConfigurationSection ,但我找不到方法来获取该部分的值。 在configuration中, ConfigurationSection的types是System.Configuration.NameValueSectionHandler 。 值得一提的是,当我使用ConfigurationManager的方法GetSection (只在它的默认app.config文件中工作时),我收到了一个对象types,我可以投入到键值对的集合中,而我刚收到像Dictionary一样的价值。 但是,当我从Configuration类接收到ConfigurationSection类时,我无法进行这种转换。 编辑:configuration文件的示例: <configuration> <configSections> <section name="MyParams" type="System.Configuration.NameValueSectionHandler" /> </configSections> <MyParams> <add key="FirstParam" value="One"/> <add key="SecondParam" value="Two"/> </MyParams> </configuration> 在app.config中,我可以使用它的方式的示例(“GetSection”方法仅用于默认的app.config): NameValueCollection myParamsCollection = (NameValueCollection)ConfigurationManager.GetSection("MyParams"); Console.WriteLine(myParamsCollection["FirstParam"]); Console.WriteLine(myParamsCollection["SecondParam"]);

这是 – “一个旧的操作员或错字/错误?

在阅读过程中,我遇到了1993年(也就是1893年,他们离开了世纪和千禧年)编写的WG14缺陷报告#51 。 在代码示例中,显然是一个运算符spelled ->>用于指向struct的指针。 我无法在我find的任何运算符优先级表中find它,所以我想知道,是或曾经是运算符,如果是,那么这个运算符做了什么(或者做了什么)? 起初我以为这是一个错字,但是它在文本中又被重复了两次,而在另一次代码样本中又回复了这个问题,我很难相信它刚刚从至less两个C专家那里滑过注意到,当它跳出来像我这样的新手。 这也是代码的重点,很容易注意到,而且从来没有纠正过。 这里是添加了缩进的代码: #include <stdlib.h> struct A { char x[1]; }; main() { struct A *p = (struct A *) malloc(sizeof(struct A) + 100); p->>x[5] = '?'; /* This is the key line [for both them and us] */ return 0; } 我试图用C和C ++编译器来编译这段代码,但是在任何一个编译器中都没有parsing。 也许这是C语言早期版本中的一些运算符,不再使用? 这感觉像这个运算符的名字是什么:“ – >”? 问题,但我不认为这是其他两个运营商的组合,我不明白它是如何分解和有效的。

如何在C#中将SID转换为帐户名称

我有一个C#应用程序,它扫描一个目录并收集一些信息。 我想显示每个文件的帐户名称。 我可以通过获取FileInfo对象的SID在本地系统上执行此操作,然后执行以下操作: string GetNameFromSID( SecurityIdentifier sid ) { NTAccount ntAccount = (NTAccount)sid.Translate( typeof( NTAccount ) ); return ntAccount.ToString(); } 但是,这对networking上的文件不起作用,大概是因为Translate()函数只能用于本地用户帐户。 我想也许我可以在SID上进行LDAP查找,所以我尝试了以下方法: string GetNameFromSID( SecurityIdentifier sid ) { string str = "LDAP://<SID=" + sid.Value + ">"; DirectoryEntry dirEntry = new DirectoryEntry( str ); return dirEntry.Name; } 这似乎是可行的,因为对“dirEntry.Name”的访问会挂起几秒钟,好像它正在closures并查询networking,但是它会抛出一个System.Runtime.InteropServices.COMException 有谁知道我可以如何获得任意文件或SID的帐户名称? 我不太了解networking或LDAP或任何东西。 有一个名为DirectorySearcher的类,也许我应该使用,但它想要一个域名,我不知道如何得到这一点 – 我所有的是我正在扫描的目录的path。 提前致谢。

从C#调用F#代码

我正在玩F#和C#,并想从C#调用F#代码。 我设法通过在Visual Studio中有两个项目在相同的解决scheme中,并将C#代码的引用添加到F#项目中,以相反的方式工作。 做完这些之后,我可以调用C#代码,甚至在debugging的时候通过它。 我想要做的是F#代码从C#而不是C#代码从F#。 我在F#项目中添加了一个对C#项目的引用,但是它不像以前那样工作。 我想知道这是否可能,而不需要手动。