草庐IT

c# - 在 C# 中执行替换之前执行检查的效率更高还是更低?

这几乎是一个学术问题,但我很好奇它的答案。假设您有一个循环对数据集中的每一行执行例行替换。假设有10,000个这样的行。这样的东西是不是更有效率:Row=Row.Replace('X','Y');或者首先检查该行是否包含要替换的字符,如下所示:if(Row.Contains('X'))Row=Row.Replace('X','Y');在效率上有什么区别吗?我意识到差异可能非常小,我有兴趣知道一种方法是否比另一种更好,而不管它可能好多少。此外,如果找到要替换的字符的概率为10%与90%,您的答案会有所不同吗? 最佳答案 对于您的检查,

c# - Silverlight C# 游戏还是图形引擎?

目前有什么好的C#Silverlight图形或游戏引擎吗?我打算用它创建一个游戏(2d或3d),但是否已经有可用的框架,或者我应该期望自己构建所有内容? 最佳答案 目前,最著名的图形引擎可能是:BalderManagedGameEnginewithboth2Dand3DsupporttargettingSilverlight2/3,XnaandOpenGL.还有:Kit3DKit3Disa3DgraphicsengineforMicrosoftSilverlight.就游戏引擎而言,有:PlayBitsEngine尽管PlayBit

c# - 我应该使用 Entity Framework 、数据集还是自定义类?

我真的很难过。我需要设计一个将使用WCF作为通信channel的“桌面应用程序”。它是一个多层应用(DB和应用服务器是一样的,客户端通过互联网云)。该应用程序比通常的LOB应用程序有点复杂(在SQL和代码逻辑方面),但概念是相同的:从DB读取、更新到DB、处理并发等。我的问题是现在使用Entity开放的框架,我无法决定采用哪种方式:我应该使用EntityFramework、数据集还是自定义类。正如我对EntityFramework的理解,它将创建我的数据库表的对象映射以及CRUD脚本。这对于简单的CRUD来说很好,但大多数时候“选择”很复杂,它需要自定义SQL。我知道我可以在EF中使用

c# - 我应该为包含 10 个或更少项目的集合使用字典,还是有更好的选择?

我有一个对象列表,我需要尽快找到一个对象(通过它的名称属性)。我应该使用什么数据结构?我知道我可以使用字典,但列表中的项目永远不会超过10个,如果我没记错的话,如果集合包含10个或更少的项目,字典将实现为一个数组。谢谢。 最佳答案 MSDN推荐ListDictionary对于包含10个或更少项目的集合:ThisisasimpleimplementationofIDictionaryusingasinglylinkedlist.ItissmallerandfasterthanaHashtableifthenumberofelement

c# - 要比较 double 和十进制,我应该将 double 转换为十进制还是将十进制转换为 double ?

我需要比较两个值。一个值是price这代表某物的当前价格等等decimal因为您实际上可以按照这个价格买卖东西。另一个值是estimatedPrice这是数学计算的结果,所以double因为它只是estimation你实际上不能通过这个esitmatedPrice做任何“操作”现在我想买如果price.那么我应该将price转换为double还是将estimatedPrice转换为decimal?我知道在转换后我会得到“略微不同”的数字,但似乎我没有其他选择。 最佳答案 这取决于数据。十进制具有更高的精度;double的范围更大。如

c# - 错误处理 我应该抛出异常吗?还是源头处理?

我有这种格式asp.netMVCView->服务层->存储库。因此View调用服务层,其中包含业务/验证逻辑,后者又调用存储库。现在我的服务层方法通常有一个bool返回类型,这样我就可以在数据库查询成功时返回true。或者如果它失败了。然后向用户显示一条通用消息。我当然会用elmah记录错误。但是我不确定我应该如何做到这一点。像现在一样,我的存储库有用于更新、创建、删除的void返回类型。也就是说,如果更新失败,我是否应该在我的存储库中有一个try/catch来抛出错误,然后我的服务层会捕获它并发出elmah信号并返回false?或者我应该让这些存储库方法返回一个“bool”,尝试/捕

C#:存储百分比,50 还是 0.50?

当在变量中保存百分比值时,在将它们保存为整数与分数之间存在偏好。也就是说,变量应该包含0到100之间还是0.00到1.00之间的数字?在任何一种情况下,保存值的变量都是十进制类型。我正在与之交互的数据库恰好将它们存储为0到100的整数。注意:我使用“整数”一词来表示0到100范围内的值,尽管这些值可能包含小数部分(例如25.75)。我不知道如何描述百分比值的两个范围之间的差异 最佳答案 我倾向于将它们存储为0到1,这样在计算中使用数字时就不需要转换。使用0到100之间的数字更像是一种查看数字的显示/可读性方式。当您显示百分比时,您可

c# - 在 C# 中,事件参数是按引用还是按值传递的?

一个相当简单的问题(我认为),但我似乎还没有看到答案。我知道有些值是通过值传递的(如int和long),而其他值在将它们传递给函数时通过引用传递(如字符串)。在我的程序中,我使用了后台工作程序,这样当我们在后台进行长时间处理时,GUI就不会锁定。我需要将数据从另一个文件传递回UI线程,因此我一直在为此使用事件。现在我需要将字符串数组列表发送回GUI线程以在那里进行处理,我担心它将如何处理。基本上,在工作线程中,我有一个循环来填充列表,通过事件处理程序将其发送回GUI,然后清除它,以便它可以在下一次通过循环时填充它并重新开始。我担心当我这样做时,如果列表是通过引用传递的,那么在UI线程上

C#:你是引发异常还是抛出异常?

我知道这可能并不重要,但我想知道什么是正确的。如果一段代码包含某个版本的thrownewSomeKindOfException()。我们是否说这段代码可能引发异常?还是抛出异常?关键字是throw,所以我有点倾向于那个,但是抛出异常也用得很多...它们有某种不同的含义吗?其中一个是否暗示了与另一个的区别?还是只是两个词的意思完全一样? 最佳答案 在C#术语中,raising用于事件上下文,throwing用于异常上下文。我个人认为throw/catch组合比raise/catch更漂亮。

c# - 如何查看我的windows服务器是虚拟机还是物理机

我正在将桌面远程连接到我们实验室/数据中心的Windows服务器。我需要以编程方式弄清楚我们所有的服务器是虚拟机还是物理服务器,当然我们有环境表告诉我们哪个是哪个。但是我需要写代码来区分它。我需要使用什么技术?我没有找到.Net程序集来执行此操作。寻找专家分享您的知识或指导,任何研究方向或链接,我们将不胜感激! 最佳答案 您可以尝试使用以下PowerShell脚本,它利用WMI来确定机器是虚拟机还是物理机。gwmi-q"select*fromwin32_computersystem"当然,您也可以使用C#代码来查询WMI。上面脚本的