Questions tagged «c#»

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

26
Foreach循环,确定哪个是循环的最后一次迭代
我有一个foreach循环,当从中选择了最后一项时,需要执行一些逻辑List,例如: foreach (Item result in Model.Results) { //if current result is the last item in Model.Results //then do something in the code } 我可以不使用for循环和计数器就知道哪个循环是最后一个吗?
233 c#  asp.net  foreach 



11
为什么在collection为null时.NET foreach循环会引发NullRefException?
因此,我经常遇到这种情况... Do.Something(...)返回一个null集合,如下所示: int[] returnArray = Do.Something(...); 然后,我尝试像这样使用此集合: foreach (int i in returnArray) { // do some more stuff } 我很好奇,为什么foreach循环不能对null集合进行操作?在我看来,0迭代将使用null集合来执行是合理的……相反,它抛出NullReferenceException。有人知道为什么会这样吗? 这很烦人,因为我使用的API尚不清楚确切返回的API,所以我if (someCollection != null)到处都是... 编辑:谢谢大家对foreach使用的解释,GetEnumerator如果没有枚举数可以获取,则foreach将失败。我想我在问为什么语言/运行时不能或不会在获取枚举数之前做空检查。在我看来,这种行为仍然可以很好地定义。
231 c#  .net 


12
在C#中将换行符添加到字符串中
我有一个字符串。 string strToProcess = "fkdfdsfdflkdkfk@dfsdfjk72388389@kdkfkdfkkl@jkdjkfjd@jjjk@"; 我需要在字符串中每次出现“ @”符号后添加换行符。 我的输出应该是这样的 fkdfdsfdflkdkfk@ dfsdfjk72388389@ kdkfkdfkkl@ jkdjkfjd@ jjjk@
230 c#  string 

10
为什么Response.Redirect导致System.Threading.ThreadAbortException?
当我使用Response.Redirect(...)将表单重定向到新页面时,出现错误: mscorlib.dll中发生类型'System.Threading.ThreadAbortException'的第一次机会异常mscorlib.dll中发生类型'System.Threading.ThreadAbortException' 的异常,但未在用户代码中处理 我对此的理解是该错误是由Web服务器中止了response.redirect被调用的页面的其余部分引起的。 我知道我可以添加第二个参数Response.Redirect,称为endResponse。如果将endResponse设置为True,仍然会收到错误,但是如果将其设置为False,则不会。我相当确定,但这意味着Web服务器正在运行我重定向的其余页面。至少可以说这似乎效率低下。有一个更好的方法吗?除了Response.Redirect或是否有其他方法可以迫使旧页面停止加载而我无法得到ThreadAbortException?
230 c#  asp.net  .net-3.5 

18
如何将带小数点的字符串解析为双精度?
我想将字符串解析"3.5"为双精度型。然而, double.Parse("3.5") 产生35和 double.Parse("3.5", System.Globalization.NumberStyles.AllowDecimalPoint) 抛出一个FormatException。 现在,我的计算机的语言环境设置为德语,其中逗号用作小数点分隔符。它可能需要对此做些事并double.Parse()期望"3,5"作为输入,但是我不确定。 如何解析包含十进制数字的字符串,该字符串可能会或可能不会按照我当前的语言环境指定的格式进行格式化?
230 c#  string  parsing  double 

12
使用“ var”会影响性能吗?
早些时候我问了一个问题,为什么我看到如此多的示例使用该var关键字并得到答案,尽管仅对于匿名类型是必需的,但仍使用它来使代码写得“更快速” /更容易并且“正因为如此”。 通过该链接(“ C#3.0-Var Is't Objec”),我看到它已var被编译为IL中正确的类型(您将在文章中途看到它)。 我的问题是,使用var关键字take可以获取多少IL代码(如果有的话),并且如果在各处使用它,它的性能甚至还可以接近吗?
230 c#  performance  variables  var 

4
依赖注入(DI)“友好”库
我正在考虑C#库的设计,该库将具有几个不同的高级功能。当然,这些高级功能将尽可能使用SOLID类设计原则来实现。这样,可能会有旨在供消费者定期直接使用的类,以及作为那些更常见的“最终用户”类的依赖的“支持类”。 问题是,设计库的最佳方法是什么: DI不可知-尽管为一个或两个常见的DI库(StructureMap,Ninject等)添加基本的“支持”似乎是合理的,但我希望消费者能够将库与任何DI框架一起使用。 非DI可用-如果库的使用者不使用DI,则该库仍应尽可能易于使用,从而减少用户创建所有这些“不重要”依赖项而要做的工作量。他们想要使用的“真实”类。 我当前的想法是为常见的DI库提供一些“ DI注册模块”(例如,StructureMap注册表,Ninject模块)以及非DI的set或Factory类,并包含与这几个工厂的耦合。 有什么想法吗?

6
[DataContract]的命名空间
我找不到要用于[DataContract]和[DataMember]元素的名称空间。根据我的发现,添加以下内容似乎就足够了,但就我而言,这还不够。 using System; using System.Runtime.Serialization; 这是我的代码片段: using System; using System.Runtime.Serialization; namespace MyNamespace { [DataContract] public class Tuple<T1, T2> { // A custom implementation of a Tuple //... //... } } 我得到的错误是: 找不到类型或名称空间名称“ DataContract”(您是否缺少using指令或程序集引用?) 我使用的命名空间不正确吗?
230 c#  wcf  datacontract 

10
如何更改.NET WebClient对象上的超时
我正在尝试(以编程方式)将客户端的数据下载到本地计算机,并且他们的Web服务器非常非常慢,这导致我的WebClient对象超时。 这是我的代码: WebClient webClient = new WebClient(); webClient.Encoding = Encoding.UTF8; webClient.DownloadFile(downloadUrl, downloadFile); 有没有办法对此对象设置无限超时?否则,如果没有人可以通过替代方法帮助我举例说明呢? 该URL在浏览器中可以正常工作-仅显示3分钟即可显示。
230 c#  .net  file  download  webclient 


12
同步调用异步方法
我有一个async方法: public async Task<string> GenerateCodeAsync() { string code = await GenerateCodeService.GenerateCodeAsync(); return code; } 我需要从同步方法中调用此方法。 我如何才能做到这一点而不必重复GenerateCodeAsync方法以使其同步工作? 更新资料 但找不到合理的解决方案。 但是,我看到HttpClient已经实现了这种模式 using (HttpClient client = new HttpClient()) { // async HttpResponseMessage responseAsync = await client.GetAsync(url); // sync HttpResponseMessage responseSync = client.GetAsync(url).Result; }

11
将过滤器设置为OpenFileDialog以允许典型的图像格式?
我有这段代码,如何允许它接受所有典型的图像格式?PNG,JPEG,JPG,GIF? 这是我到目前为止的内容: public void EncryptFile() { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; dialog.InitialDirectory = @"C:\"; dialog.Title = "Please select an image file to encrypt."; if (dialog.ShowDialog() == DialogResult.OK) { //Encrypt the selected file. I'll do this later. :) } } 请注意,筛选器设置为.txt文件。我可以更改为PNG,但是其他类型是什么?

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.