Questions tagged «c#»

C#(发音为“ See Sharp”)是由Microsoft开发的一种高级,静态类型的多范例编程语言。C#代码通常针对Microsoft的.NET系列工具和运行时,其中包括.NET Framework,.NET Core和Xamarin。使用此标记可解决有关用C#或C#正式规范编写的代码的问题。


8
检查列表在C#中是否为空[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 6年前关闭。 改善这个问题 我有一个从数据库填充的对象列表。如果列表为空,我需要显示一条错误消息,否则显示网格视图。 如何检查List<T>C#中a 是否为空?

2
如何使用C#6“使用静态”功能?
我正在看C#6 中的几个新功能,特别是 “使用静态”。 using static是一种新的using子句,可让您将类型的静态成员直接导入作用域。 (博客文章的底部) 根据我发现的一些教程,该想法如下所示, 而不是: using System; class Program { static void Main() { Console.WriteLine("Hello world!"); Console.WriteLine("Another message"); } } Console使用使用静态类的新C#6功能,可以省略重复的语句: using System.Console; // ^ `.Console` added. class Program { static void Main() { WriteLine("Hello world!"); WriteLine("Another message"); } // ^ `Console.` removed. } 但是,这似乎不适用于我。我在using声明中出现错误,说: “ using …

7
如何在ForEach中使用Async?
使用ForEach时是否可以使用Async?下面是我正在尝试的代码: using (DataContext db = new DataLayer.DataContext()) { db.Groups.ToList().ForEach(i => async { await GetAdminsFromGroup(i.Gid); }); } 我收到错误消息: 名称“异步”在当前上下文中不存在 包含using语句的方法设置为async。
123 c#  async-await 

10
检查空值的正确方法是什么?
我喜欢null-coalescing运算符,因为它使为可为null的类型分配默认值变得容易。 int y = x ?? -1; 很好,除非我需要使用做一些简单的事情x。例如,如果我想检查Session,那么我通常最终不得不写一些更冗长的东西。 我希望我可以这样做: string y = Session["key"].ToString() ?? "none"; 但是您不能,因为在.ToString()null检查之前调用gets,所以如果Session["key"]为null 则失败。我最终这样做: string y = Session["key"] == null ? "none" : Session["key"].ToString(); 我认为,此方法行之有效,并且比三行方法更好: string y = "none"; if (Session["key"] != null) y = Session["key"].ToString(); 即使这样行​​得通,但我仍然好奇是否有更好的方法。似乎我总是必须Session["key"]两次引用。一次检查,再一次分配。有任何想法吗?

13
如何在编译时驱动C#,C ++或Java编译器来计算1 + 2 + 3 +…+ 1000?
在最近的一次采访中,有人问我一个非常奇怪的问题。面试官问我如何仅使用编译器功能来计算1 + 2 + 3 + ... + 1000。这意味着我不允许编写程序并执行它,但是我只应该编写一个程序,该程序可以驱动编译器在编译时计算此和,并在编译完成时打印结果。作为提示,他告诉我,我可能会使用编译器的泛型和预处理器功能。可以使用C ++,C#或Java编译器。有任何想法吗??? 这个问题与此处未询问任何循环的求和无关。另外,应该注意,总和应该在编译期间计算。使用C ++编译器指令仅打印结果是不可接受的。 阅读有关发布的答案的更多信息后,我发现使用C ++模板在编译过程中解决问题称为metaprogramming。这是Erwin Unruh博士在标准化C ++语言的过程中偶然发现的一项技术。您可以在meta-programming的Wiki页面上阅读有关此主题的更多信息。似乎可以使用Java注释用Java编写程序。您可以在下面查看maress的答案。 关于用C元编程++一个很好的书是这一个。如果有兴趣的话值得一看。 Boost的MPL 这个链接是一个有用的C ++元编程库。



28
将枚举绑定到WinForms组合框,然后进行设置
许多人回答了如何将枚举绑定到WinForms中的组合框的问题。就像这样: comboBox1.DataSource = Enum.GetValues(typeof(MyEnum)); 但是,如果无法设置要显示的实际值,那将毫无用处。 我努力了: comboBox1.SelectedItem = MyEnum.Something; // Does not work. SelectedItem remains null 我也尝试过: comboBox1.SelectedIndex = Convert.ToInt32(MyEnum.Something); // ArgumentOutOfRangeException, SelectedIndex remains -1 有谁知道如何做到这一点?
122 c#  .net  winforms  combobox  enums 

30
如何将超时添加到Console.ReadLine()?
我有一个控制台应用程序,我想在其中给用户x秒的时间来响应提示。如果经过一定时间后仍未输入任何内容,则程序逻辑应继续。我们假设超时意味着空响应。 解决这个问题的最直接方法是什么?
122 c#  .net  console  timeout  io 

4
为什么将int强制转换为无效的枚举值不会引发异常?
如果我有这样的枚举: enum Beer { Bud = 10, Stella = 20, Unknown } int将这些值之外的an强制转换为类型时,为什么不引发异常Beer? 例如,以下代码不会引发异常,它会向控制台输出“ 50”: int i = 50; var b = (Beer) i; Console.WriteLine(b.ToString()); 我觉得这很奇怪...有人可以澄清吗?
122 c# 

16
使用LINQ检查列表是否为空
确定列表是否为空的“最佳”方式(兼顾速度和可读性)是什么?即使列表是类型IEnumerable<T>并且没有Count属性。 现在,我在这之间折腾: if (myList.Count() == 0) { ... } 还有这个: if (!myList.Any()) { ... } 我的猜测是第二个选项更快,因为它会在看到第一个项目后立即返回结果,而第二个选项(对于IEnumerable)将需要访问每个项目以返回计数。 话虽这么说,第二种选择对您来说可读吗?你更喜欢哪个?还是您可以想到一种更好的方法来测试空列表? Edit @lassevk的响应似乎是最合乎逻辑的,再加上一些运行时检查,以便在可能的情况下使用缓存的计数,如下所示: public static bool IsEmpty<T>(this IEnumerable<T> list) { if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0; return !list.Any(); }
122 c#  .net  linq  list 

8
去工作流还是不去工作流?
我负责一个开发人员团队,他们将要开始开发轻型保险理赔系统。该系统涉及许多手动任务和业务工作流,我们正在研究使用Windows Workflow(.NET 4.0)。 业务领域的示例如下:保单持有人致电联系中心提出索赔。此“事件”触发两个子任务,这两个子任务是手动并行执行的,可能需要很长时间才能完成; 检查客户是否存在欺诈行为–一种手动过程,操作员可以通过该过程调用各种信贷公司来检查和评估欺诈客户的潜力。在这里,子任务可以输入许多子状态(检查中,参考检查失败,参考检查通过等) 将项目发送到维修中心–手动过程,将保单持有人提出索赔的项目发送到维修中心进行修复。从此处,子任务可以输入许多子状态(等待修复,进行中,已修复,已发布等)。仅当每个子任务的状态达到预定义的状态(基于业务规则)时,索赔才能继续进行。 从表面上看,Workflow确实是最好的技术选择。但是我在使用WF 4.0时确实有些担心。 技能集–查看平均开发人员技能集,我看不到许多了解或了解工作流程的开发人员。 可维护性–社区内部对WF 4.0项目的支持似乎很少,并且再加上缺乏技能集,引发了人们对可维护性的担忧。 进入障碍–我感到Windows Workflow的学习曲线很陡,而且拿起来并不总是那么容易。 新产品–由于Workflow已针对.NET 4.0进行了完全重写,因此我将该产品视为第一代产品,可能没有必要的稳定性。 声誉–以前的工作流版本不受欢迎,被认为难以开发,并且导致业务采用率低。 所以我的问题是,在这种情况下我们应该使用Windows Workflow(WF)4.0,还是有替代技术(例如,简单状态机等)使用甚至更好的工作流引擎?

3
如何在C#中添加(简单)跟踪?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 3年前关闭。 改善这个问题 我想对我正在编写的C#应用​​程序进行一些跟踪。可悲的是,我永远无法真正记住它是如何工作的,并希望时不时地检查一下具有参考品质的教程。它应包括: 添加App.config / Web.config内容以注册TraceListeners 如何在调用应用程序中进行设置 您知道我们应该链接的超级教程吗? 编辑:格伦·斯拉文(Glenn Slaven)向我指出了正确的方向。将其添加到您的App.config / Web.config中<configuration/>: <system.diagnostics> <trace autoflush="true"> <listeners> <add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter" initializeData="trace.log" /> </listeners> </trace> </system.diagnostics> 这将添加一个TextWriterTraceListener可以捕获您发送给所有内容的邮件Trace.WriteLine等等。 编辑: @DanEsparza指出,你应该使用Trace.TraceInformation,Trace.TraceWarning并Trace.TraceError代替Trace.WriteLine,因为它们允许你格式邮件的方法一样string.Format。 提示:如果不添加任何侦听器,则仍可以使用SysInternals程序DebugView(Dbgview.exe)查看跟踪输出:http : //technet.microsoft.com/zh-cn/sysinternals/bb896647.aspx
122 c#  trace 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.