Questions tagged «c#»

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

17
关于带有Enumerable.Range vs传统for循环的foreach的思考
在C#3.0中,我喜欢这种样式: // Write the numbers 1 thru 7 foreach (int index in Enumerable.Range( 1, 7 )) { Console.WriteLine(index); } 在传统for循环中: // Write the numbers 1 thru 7 for (int index = 1; index <= 7; index++) { Console.WriteLine( index ); } 假设“ n”很小,那么性能就不成问题了,有人反对传统风格吗?
75 c#  .net  c#-3.0  for-loop 

9
何时使用TestFixtureSetUp属性代替默认构造函数?
NUnit文档没有告诉我何时使用带有a的方法TestFixtureSetup以及何时在构造函数中进行设置。 public class MyTest { private MyClass myClass; public MyTest() { myClass = new MyClass(); } [TestFixtureSetUp] public void Init() { myClass = new MyClass(); } } 关于TestFixtureSetup默认构造函数是否有好的/不好的做法,或者没有任何区别吗?
75 c#  unit-testing  nunit 

19
在.NET(C#)中本地存储数据的最佳方法
我正在编写一个接受用户数据并将其存储在本地以供以后使用的应用程序。该应用程序将经常启动和停止,我想使其在应用程序启动/结束时保存/加载数据。 如果我使用平面文件,那将是相当简单的,因为实际上并不需要保护数据(仅将数据存储在此PC上)。因此,我相信的选择是: 平面文件 XML格式 SQL数据库 平面文件需要花费更多的精力来维护(没有像XML这样的内置类),但是我以前从未使用过XML,对于这个相对简单的任务来说,SQL似乎有些过头。 还有其他值得探索的途径吗?如果没有,哪个是最佳解决方案? 编辑:要添加更多的数据到问题,基本上我只想存储的是一个字典,看起来像这样 Dictionary<string, List<Account>> 其中“帐户”是另一种自定义类型。 是否将dict序列化为xmlroot,然后将Account类型序列化为属性? 更新2: 因此可以序列化字典。使它变得复杂的是,此dict的值本身是通用的,它是Account类型的复杂数据结构的列表。每个帐户都非常简单,只是一堆属性。 据我了解,这里的目标是尝试并最终实现: <Username1> <Account1> <Data1>data1</Data1> <Data2>data2</Data2> </Account1> </Username1> <Username2> <Account1> <Data1>data1</Data1> <Data2>data2</Data2> </Account1> <Account2> <Data1>data1</Data1> <Data2>data2</Data2> </Account2> </Username2> 如您所见, 用户名(字典字符串)> 帐户(列表中的每个帐户)> 帐户数据(即类属性)。 从a获得这种布局Dictionary<Username, List<Account>>是一个棘手的问题,也是这个问题的本质。 关于序列化,这里有很多“如何做”的响应,这是我的错,因为我并没有很早就弄清楚,但是现在我正在寻找一个确定的解决方案。
75 c#  .net  xml  data-storage 

10
向上,向下,向左和向右箭头键不会触发KeyDown事件
我正在构建一个应用程序,其中所有键输入必须由Windows本身处理。 我将tabstop设置为false,以使每个控制面板除面板外都能抓住焦点(但我不知道它是否有效果)。 我将KeyPreview设置为true,并且正在处理此表单上的KeyDown事件。 我的问题是,有时箭头键不再响应: 当我仅按箭头键时,不会触发keydown事件。 如果按下带有控制键的箭头键,将触发keydown事件。 您知道为什么我的箭头键突然停止触发事件吗?
75 c#  winforms  keydown 

3
如何在ASP.NET Web API中为Json.NET设置自定义JsonSerializerSettings?
我知道ASP.NET Web API本机使用Json.NET来(反序列化)对象,但是有没有一种方法可以指定要使用的JsonSerializerSettings对象? 例如,如果我想将type信息包括在序列化的JSON字符串中怎么办?通常,我会将设置注入到.Serialize()调用中,但是Web API会以静默方式进行操作。我找不到手动注入设置的方法。

10
Visual Studio:生成流程时自动附加到流程
我想在生成一个进程(a.exe)时附加它,它可以在VS中使用吗?我只知道进程的名称。实际上,我想完成的工作是在c#代码中设置一个断点,但是该代码属于另一个可执行文件,它将由当前运行的应用程序(c.exe)启动。该代码在初始化期间内,因此我无法手动进行附加。

6
领域与财产。性能优化
请注意此问题仅与性能有关。让我们跳过设计准则,理念,兼容性,可移植性以及与纯性能无关的任何内容。谢谢。 现在到问题。我一直以为,因为C#的getter / setters实际上是伪装的方法,所以读取公共字段必须比调用getter更快。 因此,请确保我进行了测试(下面的代码)。但是,如果从Visual Studio内部运行此测试,则只能产生预期的结果(即,字段比getter的速度快34%)。 从命令行运行后,它将显示几乎相同的时间... 唯一的解释可能是CLR进行了其他优化(如果我在这里错了,请纠正我)。 我不认为在实际应用中以更复杂的方式使用这些属性时,它们将以相同的方式进行优化。 请帮助我证明或否定现实生活中的属性比字段慢的想法。 问题是-我应该如何修改测试类以使CLR更改行为,以便公共领域优于吸气剂。或告诉我,任何没有内部逻辑的属性都将与字段表现相同(至少在getter上) 编辑:我只在谈论发布x64版本。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Runtime.InteropServices; namespace PropertyVsField { class Program { static int LEN = 20000000; static void Main(string[] args) { List<A> a = new List<A>(LEN); List<B> b = new List<B>(LEN); …

12
从用户输入读取整数
我正在寻找的是如何读取用户从命令行(控制台项目)给出的整数。我主要了解C ++,并且已经开始使用C#路径。我知道Console.ReadLine(); 只需要一个字符/字符串。简而言之,我正在寻找此的整数版本。 只是让您大致了解我在做什么: Console.WriteLine("1. Add account."); Console.WriteLine("Enter choice: "); Console.ReadLine(); // Needs to take in int rather than string or char. 我已经为此寻找了很长一段时间。我在C上找到了很多东西,但在C#上却找不到。但是,我确实在另一个站点上发现了一个建议从char转换为int的线程。我敢肯定必须有比转换更直接的方法。
75 c#  input 

11
如何获得Windows显示设置?
Windows 7中有显示设置(控制面板->显示)。它允许更改文本和屏幕上其他项目的大小。我需要获得此设置,以便能够基于设置值打开/关闭C#应用程序中的某些功能。那可能吗?
75 c#  windows  dpi 

6
类型存在于2个程序集中
我已经从两个不同的第三方COM DLL创建了两个.NET Interop程序集。两个COM DLL都包含一个名为的类型COMMONTYPE。因此,COMMONTYPE现在也通过两个Interop组件公开了。 我有第三个项目需要使用这两个Interop程序集,并且得到了臭名昭著的编译时错误: 该类型同时<ABC>存在于<ASSEMBLY1.dll>和<ASSEMBLY2.dll> 由于COM DLL是由第三方供应商提供的,因此我无法访问源代码,并且正在编写C#控制台应用程序,这意味着我没有可在其中添加debug=false解决方法的web.config文件。我能做什么?
75 c#  com-interop 


4
C#7元组和Lambda
使用新的C#7元组语法,是否可以指定一个以元组为参数的lambda并在lambda中使用解压缩的值? 例: var list = new List<(int,int)>(); 在lambda中使用元组的正常方法: list.Select(value => value.Item1*2 + value.Item2/2); 我希望避免使用新糖.Item1 .Item2,例如: list.Select((x,y) => x*2 + y/2); 最后一行不起作用,因为它被视为lambda的两个参数。我不确定是否真的有办法。 编辑: 我在lambda定义((x,y)) => ...中尝试了双括号,但没有用:,也许尝试起来很愚蠢,但是双括号实际上在这里起作用: list.Add((1,2)); 另外,我的问题不是要避免使用丑陋的默认名称.Item .Item2,而是要在lambda中实际拆开元组(以及为什么不能实现或不可能)。如果您是来这里使用默认名称的解决方案,请阅读Sergey Berezovskiy的答案。 编辑2: 只是想到了一个更通用的用例:是否有可能(或为什么不这样做)“解构”传递给方法的元组?像这样: void Foo((int,int)(x,y)) { x+y; } 代替这个: void Foo((int x,int y) value) { value.x+value.y }
75 c#  lambda  tuples  c#-7.0 

5
MVC的当前上下文中不存在名称“脚本”
在我的mvc应用程序中,_Layout.cshtml中的代码如下... <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>@ViewBag.Title - My ASP.NET Application</title> @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") </head> 但问题是它说The name 'Scripts' does not exists in the current context。 我已经将程序集添加到引用和Bundle配置中,如下所示: using System.Web.Optimization; @styles也会发生这种情况。我该怎么办?
75 c#  asp.net-mvc  razor 

17
合并两个(或多个)PDF
背景:我需要为销售人员提供每周报告。该软件包包含几个(5-10)水晶报告。 问题: 我想允许用户运行所有报告,也只运行一个报告。我以为可以通过创建报告然后执行以下操作来做到这一点: List<ReportClass> reports = new List<ReportClass>(); reports.Add(new WeeklyReport1()); reports.Add(new WeeklyReport2()); reports.Add(new WeeklyReport3()); <snip> foreach (ReportClass report in reports) { report.ExportToDisk(ExportFormatType.PortableDocFormat, @"c:\reports\" + report.ResourceName + ".pdf"); } 这样可以为我提供一个充满报告的文件夹,但是我想通过电子邮件将每个星期的报告发送给所有人。所以我需要将它们结合起来。 有没有一种简单的方法,而无需安装任何其他第三方控件?我已经有了DevExpress和CrystalReports,并且我不想添加太多。 最好在foreach循环中或在单独的循环中组合它们?(或另一种方法)
75 c#  .net  winforms  pdf 

6
C#中的Promise等效项
在Scala中,有一个Promise类可用于手动完成Future。我正在寻找C#中的替代方法。 我正在编写一个测试,并且希望它看起来像这样: // var MyResult has a field `Header` var promise = new Promise<MyResult>; handlerMyEventsWithHandler( msg => promise.Complete(msg); ); // Wait for 2 seconds var myResult = promise.Future.Await(2000); Assert.Equals("my header", myResult.Header); 我知道这可能不是C#的正确模式,但是即使模式有所不同,我也无法找出实现相同目标的合理方法。 编辑:请注意,async/await在这里没有帮助,因为我没有等待的任务!我只有访问将在另一个线程上运行的处理程序的权限。

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.