Questions tagged «c#»

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


2
实体框架异步操作需要十倍的时间才能完成
我有一个使用Entity Framework 6处理数据库的MVC站点,并且我一直在尝试对其进行更改,以使所有内容都作为异步控制器运行,并且对数据库的调用作为它们的异步对应对象(例如ToListAsync()而不是ToList()) 我遇到的问题是,仅将查询更改为异步已使它们的运行速度变得异常慢。 以下代码从我的数据上下文中获取“相册”对象的集合,并转换为相当简单的数据库联接: // Get the albums var albums = await this.context.Albums .Where(x => x.Artist.ID == artist.ID) .ToListAsync(); 这是创建的SQL: exec sp_executesql N'SELECT [Extent1].[ID] AS [ID], [Extent1].[URL] AS [URL], [Extent1].[ASIN] AS [ASIN], [Extent1].[Title] AS [Title], [Extent1].[ReleaseDate] AS [ReleaseDate], [Extent1].[AccurateDay] AS [AccurateDay], [Extent1].[AccurateMonth] AS [AccurateMonth], [Extent1].[Type] AS [Type], [Extent1].[Tracks] AS …

8
如何在c#/。net中记录引发的异常
我目前正在编写一个小型框架,供公司内其他开发人员在内部使用。 我想提供良好的Intellisense信息,但是我不确定如何记录抛出的异常。 在以下示例中: public void MyMethod1() { MyMethod2(); // also may throw InvalidOperationException } public void MyMethod2() { System.IO.File.Open(somepath...); // this may throw FileNotFoundException // also may throw DivideByZeroException } 我知道记录异常的标记是: /// <exception cref="SomeException">when things go wrong.</exception> 我不明白的是如何记录by 调用的 代码引发的异常MyMethod1()? 我应该记录由抛出的异常吗 MyMethod2() 我应该记录抛出的异常File.Open()吗? 记录可能的例外的最佳方法是什么?

7
为什么不能将匿名方法分配给var?
我有以下代码: Func<string, bool> comparer = delegate(string value) { return value != "0"; }; 但是,以下内容无法编译: var comparer = delegate(string value) { return value != "0"; }; 为何编译器无法找出它是Func<string, bool>?它采用一个字符串参数,并返回一个布尔值。相反,它给了我错误: 无法将匿名方法分配给隐式类型的局部变量。 我有一个猜测,那就是如果var版本已编译,如果我具有以下内容,它将缺乏一致性: var comparer = delegate(string arg1, string arg2, string arg3, string arg4, string arg5) { return false; }; 由于Func <>最多只允许使用4个参数(在.NET 3.5中,这是我正在使用的参数),因此上述方法没有意义。也许有人可以澄清这个问题。谢谢。


7
如何将分隔的字符串分割()到List <String>
我有以下代码: String[] lineElements; . . . try { using (StreamReader sr = new StreamReader("TestFile.txt")) { String line; while ((line = sr.ReadLine()) != null) { lineElements = line.Split(','); . . . 但后来以为我应该改用List。但是这段代码: List&lt;String&gt; listStrLineElements; . . . try { using (StreamReader sr = new StreamReader("TestFile.txt")) { String line; while ((line = …
139 c#  .net  list  arraylist 

12
在C#中执行批处理文件
我正在尝试在C#中执行批处理文件,但是这样做并没有任何运气。 我已经在互联网上找到了许多这样做的例子,但是它对我来说不起作用。 public void ExecuteCommand(string command) { int ExitCode; ProcessStartInfo ProcessInfo; Process Process; ProcessInfo = new ProcessStartInfo("cmd.exe", "/c " + command); ProcessInfo.CreateNoWindow = true; ProcessInfo.UseShellExecute = false; Process = Process.Start(ProcessInfo); Process.WaitForExit(); ExitCode = Process.ExitCode; Process.Close(); MessageBox.Show("ExitCode: " + ExitCode.ToString(), "ExecuteCommand"); } 命令字符串包含批处理文件的名称(存储在中system32)和它应处理的一些文件。(例如:)txtmanipulator file1.txt file2.txt file3.txt。当我手动执行批处理文件时,它可以正常工作。 执行代码时,它给了我一个 **ExitCode: 1** (Catch all …

28
为什么不在“捕获”或“最终”范围内的“尝试”中声明变量?
在C#和Java(可能还有其他语言)中,在“ try”块中声明的变量不在相应的“ catch”或“ finally”块中。例如,以下代码无法编译: try { String s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } 在此代码中,在catch块中对s的引用发生编译时错误,因为s仅在try块的范围内。(在Java中,编译错误是“无法解决”;在C#中,它是“名称s在当前上下文中不存在”。) 解决此问题的一般方法似乎是在try块之前而不是在try块内声明变量: String s; try { s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } 但是,至少对我来说,(1)感觉像一个笨拙的解决方案,(2)它导致变量的范围比程序员预期的范围大(方法的整个其余部分,而不仅仅是在上下文中)。最终尝试捕获)。 我的问题是,此语言设计决定(使用Java,C#和/或任何其他适用的语言)背后的基本原理是什么?

7
在发布模式下在.NET程序集的堆栈跟踪中显示行号
有没有一种方法可以显示在发布模式下以.NET程序集构建/部署的堆栈跟踪中的行? 更新: 我的应用程序分为三个类库项目和一个ASP.NET“网站”项目。我尝试查找的错误是在三个类库项目之一中。我只为生成“对象引用未设置为对象实例”错误的类库项目部署了pdb文件。 行号仍未显示在堆栈跟踪中。我是否需要为所有项目部署pdb文件才能在堆栈跟踪中获取行号? 工作方案 为每个应用程序部署pdb文件解决了行号问题。

13
计算两个经纬坐标之间的距离
我正在计算两个地理坐标之间的距离。我正在针对其他3-4个应用测试我的应用。在计算距离时,我的平均计算速度通常为3.3英里,而其他应用程序则为3.5英里。这对我要执行的计算有很大的不同。是否有用于计算距离的优质类库?我在C#中这样计算: public static double Calculate(double sLatitude,double sLongitude, double eLatitude, double eLongitude) { var radiansOverDegrees = (Math.PI / 180.0); var sLatitudeRadians = sLatitude * radiansOverDegrees; var sLongitudeRadians = sLongitude * radiansOverDegrees; var eLatitudeRadians = eLatitude * radiansOverDegrees; var eLongitudeRadians = eLongitude * radiansOverDegrees; var dLongitude = eLongitudeRadians - sLongitudeRadians; var dLatitude …

1
如何获得等待的Thread.Sleep?
我正在写一个基于等待/睡眠模式的网络绑定应用程序。 有时会发生连接错误,以我的经验,等待一段时间然后再次重试操作是值得的。 问题是,如果我在wait / async中使用Thread.Sleep或其他类似的阻止操作,它将阻止调用者线程中的所有活动。 我应该用Thread.Sleep(10000)代替以达到与 await Thread.SleepAsync(10000) ? 更新 我希望这样做而不创建任何其他线程的答案

8
从动作过滤器属性重定向
在中进行重定向的最佳方法是什么ActionFilterAttribute?我有一个ActionFilterAttribute电话,IsAuthenticatedAttributeFilter并检查了会话变量的值。如果变量为false,则我希望应用程序重定向到登录页面。我更愿意使用路由名称进行重定向,SystemLogin但是此时任何重定向方法都可以。

3
为什么“十进制”不是有效的属性参数类型?
确实令人难以置信,但却是真实的。此代码将不起作用: [AttributeUsage(AttributeTargets.Property|AttributeTargets.Field)] public class Range : Attribute { public decimal Max { get; set; } public decimal Min { get; set; } } public class Item { [Range(Min=0m,Max=1000m)] //compile error:'Min' is not a valid named attribute argument because it is not a valid attribute parameter type public decimal Total { …
139 c#  .net  attributes 


15
将通用列表转换为CSV字符串
我有一个整数值列表(列表),并且想生成一个用逗号分隔的字符串。那就是列表中的所有项目输出到一个逗号分隔的列表中。 我的想法... 1.将列表传递给方法。2.使用stringbuilder迭代列表并附加逗号。3.测试最后一个字符,如果它是逗号,则将其删除。 你觉得呢?你有没有什么想法?这是最好的方法吗? 如果将来我不仅要处理整数(当前的计划)而且要处理字符串,长整型,双精度型,布尔型等,我的代码将如何更改?我想让它接受任何类型的列表。
139 c#  generics  .net-3.5 

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.