Tag: C#的

何时使用大括号初始化程序?

在C ++ 11中,我们有了初始化类的新语法,这给我们提供了大量的如何初始化variables的可能性。 { // Example 1 int b(1); int a{1}; int c = 1; int d = {1}; } { // Example 2 std::complex<double> b(3,4); std::complex<double> a{3,4}; std::complex<double> c = {3,4}; auto d = std::complex<double>(3,4); auto e = std::complex<double>{3,4}; } { // Example 3 std::string a(3,'x'); std::string b{3,'x'}; // oops } { // Example […]

如何在C#中获取当前用户的桌面path?

如何获得C#中当前用户的桌面path? 我唯一能find的就是VB.NET类SpecialDirectories ,它有这个属性: My.Computer.FileSystem.SpecialDirectories.Desktop 我怎样才能在C#中做到这一点?

在C#中的定点math?

我想知道是否有人知道在C#中定点math的任何好资源? 我已经看到了这样的事情( http://2ddev.72dpiarmy.com/viewtopic.php?id=156 )和这个( 做定点math的最好方法是什么? ),还有一些讨论关于decimal是真正的固定点或实际浮点(更新:响应者已经确认,这是肯定的浮点),但我还没有看到像计算余弦和正弦的东西一个坚实的C#库。 我的需求很简单 – 我需要基本的操作符,加上余弦,正弦,arctan2,PI …我认为就是这样。 也许sqrt。 我正在编写一个2D RTS游戏,我主要工作,但是使用浮点运算(双精度)的单位运动在多个机器上随着时间的推移(10-30分钟)有很小的不准确性,导致desyncs。 目前这只是一个32位的操作系统和一个64位的操作系统之间,所有的32位机器似乎保持同步没有问题,这是什么让我觉得这是一个浮点问题。 我从一开始就意识到这是一个可能的问题,所以我尽可能地限制了对非整数位置math的使用,但是对于变化的速度下的平滑对angular线运动,我正在计算以弧度表示的点之间的angular度,然后用sin和cos获得运动的x和y分量。 这是主要问题。 我也对线段交点,线圆交点,圆弧交点等进行了计算,也可能需要从浮点移动到定点,以避免跨机器问题。 如果在Java或VB或其他类似的语言中有开源的东西,我可能会转换为我的使用代码。 我的主要优先考虑是准确性,尽pipe我希望尽可能less的速度损失。 这整个定点math的东西对我来说是非常新的,我很惊讶它在谷歌上的实用信息有多less – 大多数东西似乎是理论或密集的C ++头文件。 任何你可以做的事情指向正确的方向我非常感激; 如果我能得到这个工作,我打算开放我放在一起的math函数,这样就会有其他C#程序员的资源。 更新:我可以确定一个余弦/正弦查找表为我的目的工作,但我不认为这将适用于arctan2,因为我需要生成约64,000 x 64,000条目(yike)表。 如果你知道有效的方法来计算像arctan2这样的程序化的解释,那就太棒了。 我的math背景是好的,但先进的公式和传统的math符号很难转化为代码。

我可以在C#中读取Outlook(2003/2007)PST文件吗?

是否有可能使用C#读取.PST文件? 我想做一个独立的应用程序,而不是作为一个Outlook插件(如果可能的话)。 如果看到其他 类似这样的问题提到MailNavigator,但我期待以编程方式在C#中执行此操作。 我已经看了Microsoft.Office.Interop.Outlook命名空间,但似乎只是为Outlook插件。 LibPST似乎能够读取PST文件,但这是在C(对不起,乔尔,我没有学过C之前,gradle )。 任何帮助将不胜感激,谢谢! 编辑: 谢谢大家的回应! 我接受了Matthew Ruston的回答,因为它最终将我引向了我正在寻找的代码。 这里是我工作的一个简单的例子(你将需要添加一个对Microsoft.Office.Interop.Outlook的引用): using System; using System.Collections.Generic; using Microsoft.Office.Interop.Outlook; namespace PSTReader { class Program { static void Main () { try { IEnumerable<MailItem> mailItems = readPst(@"C:\temp\PST\Test.pst", "Test PST"); foreach (MailItem mailItem in mailItems) { Console.WriteLine(mailItem.SenderName + " – " + mailItem.Subject); } } catch (System.Exception […]

什么是__stdcall?

我正在学习Win32编程, WinMain原型如下所示: int WINAPI WinMain ( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmd_line, int cmd_show ) 我很困惑这个WINAPI标识符是什么,并发现: #define WINAPI __stdcall 这是做什么的? 我很困惑,因为在返回types之后有什么东西。 什么是__stdcall ? 返回types和函数名称之间有什么意义时,这意味着什么?

什么时候应该使用Lazy <T>?

我发现这篇关于Lazy : 懒惰在C#4.0 – 懒惰 使用Lazy对象获得最佳性能的最佳做法是什么? 有人能指出我在实际应用中的实际使用吗? 换句话说,我应该什么时候使用它?

Visual Studio 2015不语法高亮剃刀或智能感知

我在VS2015 RC的Razor视图没有显示C#代码的正确颜色。 我的项目在VS2013中工作得很好,但不是在2015年,也没有给我任何关于C#代码的Intellisense。 该解决scheme构build和网站运行良好。 我尝试了以下无济于事 禁用所有的Visual Studio扩展 删除我的.suo文件 删除项目并重新添加到解决scheme 我该如何解决这个问题? 例:

为什么Func <T,bool>而不是Predicate <T>?

这只是一个好奇的问题,我想知道如果有人有一个很好的答案: 在.NET Framework类库中,我们有例如这两个方法: public static IQueryable<TSource> Where<TSource>( this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate ) public static IEnumerable<TSource> Where<TSource>( this IEnumerable<TSource> source, Func<TSource, bool> predicate ) 为什么他们使用Func<TSource, bool>而不是Predicate<TSource> ? 似乎Predicate<TSource>仅被List<T>和Array<T> ,而Func<TSource, bool>几乎被所有的Queryable和Enumerable方法和扩展方法使用…这是怎么回事?

将单个项目传递为IEnumerable <T>

有没有一种常见的方式来传递一个typesT的单个项目的方法,期望IEnumerable<T>参数? 语言是C#,框架版本2.0。 目前我正在使用一个辅助方法(它是.Net 2.0,所以我有一大堆类似于LINQ的投射/投影辅助方法),但这看起来很愚蠢: public static class IEnumerableExt { // usage: IEnumerableExt.FromSingleItem(someObject); public static IEnumerable<T> FromSingleItem<T>(T item) { yield return item; } } 其他方式当然是创build和填充一个List<T>或一个Array并通过它而不是IEnumerable<T> 。 [编辑]作为扩展方法,它可能被命名为: public static class IEnumerableExt { // usage: someObject.SingleItemAsEnumerable(); public static IEnumerable<T> SingleItemAsEnumerable<T>(this T item) { yield return item; } } 我在这里错过了什么? [编辑2]我们发现someObject.Yield() (作为@Peterbuild议在下面的评论)是这个扩展方法的最好的名字,主要是为了简洁,所以在这里,如果有人想要抓住它, public static class IEnumerableExt { /// […]

如何通过索引擦除std :: vector <>中的元素?

我有一个std :: vector <int>,我想删除第n个元素。 我怎么做? std::vector<int> vec; vec.push_back(6); vec.push_back(-17); vec.push_back(12); vec.erase(???);