Questions tagged «c#»

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

30
Visual Studio“无法复制”…在构建过程中
在我的VS2012 C#项目的构建过程中,我不断收到此错误 Error 41 Could not copy "obj\Debug\WeinGartner.WeinCad.exe" to "bin\Debug\WeinGartner.WeinCad.exe". Exceeded retry count of 10. Failed. Error 42 Unable to copy file "obj\Debug\WeinGartner.WeinCad.exe" to "bin\Debug\WeinGartner.WeinCad.exe". The process cannot access the file 'bin\Debug\WeinGartner.WeinCad.exe' because it is being used by another process. 现在我想通了 Weingartner.WeinCad.vhost.exe 有效(有时),但这让我感到不安。有什么办法可以阻止这种情况的发生? 我的调试器设置是

18
XmlSerializer在构造函数中提供FileNotFoundException
我尝试使用的应用程序在尝试序列化类型时失败。 像这样的声明 XmlSerializer lizer = new XmlSerializer(typeof(MyType)); 产生: System.IO.FileNotFoundException occurred Message="Could not load file or assembly '[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified." Source="mscorlib" FileName="[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" FusionLog="" StackTrace: at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, …

4
将Linq查询结果转换为字典
我想使用Linq to SQL向数据库中添加一些行,但是我想在添加行之前进行“自定义检查”,以了解是否必须添加,替换或忽略传入的行。我想尽量减少客户端和数据库服务器之间的通信量,并最大程度地减少查询数量。 为此,我希望获取验证所需的尽可能少的信息,并且在过程开始时仅获取一次。 我当时正在考虑做这样的事情,但是显然,这是行不通的。有人有主意吗? Dictionary<int, DateTime> existingItems = (from ObjType ot in TableObj select (new KeyValuePair<int, DateTime>(ot.Key, ot.TimeStamp)) ) 我最后想要的是一个Dictionary,而不必从TableObject下载整个ObjectType对象。 我还考虑了以下代码,但是我试图找到一种正确的方法: List<int> keys = (from ObjType ot in TableObj orderby ot.Key select ot.Key).ToList<int>(); List<DateTime> values = (from ObjType ot in TableObj orderby ot.Key select ot.Value).ToList<int>(); Dictionary<int, DateTime> existingItems = …

3
使用事务还是SaveChanges(false)和AcceptAllChanges()?
我一直在研究交易和看来,他们照顾自己的EF只要我传递false到SaveChanges(),然后调用AcceptAllChanges(),如果没有错误: SaveChanges(false); // ... AcceptAllChanges(); 如果出现问题怎么办?我不必回滚,或者一旦方法超出范围,交易是否结束? 在事务中途分配的所有intentiy列会如何处理?我想如果有人在我的坏事发生之前在我的事后添加了一条记录,那么这意味着将丢失一个Identity值。 有什么理由TransactionScope在我的代码中使用标准类吗?

13
为什么我们必须在C#中同时定义==和!=?
C#编译器要求,每当自定义类型定义operator时==,它也必须定义!=(请参阅此处)。 为什么? 我很好奇,为什么设计师会认为这是必要的,为什么当仅存在另一个运算符时,编译器为什么不能默认其中一个运算符的合理实现。例如,Lua允许您仅定义相等运算符,而另一个则免费。C#可以通过要求您定义==或同时定义==和!=,然后将缺少的!=运算符自动编译为来执行相同的操作!(left == right)。 我知道有些情况下有些实体可能不相等或不相等(例如IEEE-754 NaN),但是在某些特殊情况下,这似乎是个例外,而不是规则。因此,这不能解释为什么C#编译器设计人员将例外作为规则。 我已经看到了定义平等运算符的工艺不佳的情况,然后不平等运算符是一个复制粘贴,每个比较都相反,每个&&切换为||。(您明白了……基本上!(a == b)通过De Morgan的规则扩展了)。与Lua的情况一样,编译器可以通过设计消除这种糟糕的做法。 注意:运算符<> <=> =也是如此。我无法想象需要用不自然的方式定义它们的情况。Lua允许您仅定义<和<=,并通过前者的否定自然定义> =和>。C#为什么不做同样的事情(至少是“默认”)? 编辑 显然,有充分的理由允许程序员执行他们喜欢的相等性和不平等性检查。一些答案指出了可能不错的情况。 但是,我的问题的核心是,为什么在C#中通常在逻辑上不必要时强制执行此操作? 这与.NET接口(如)的设计选择形成了鲜明的对比Object.Equals,IEquatable.Equals IEqualityComparer.Equals其中缺少NotEquals对应项表明该框架将!Equals()对象视为不相等,仅此而已。此外,类Dictionary和方法之类的类.Contains()仅取决于上述接口,即使定义了它们也不直接使用运算符。事实上,当ReSharper的生成平等部件,它定义两个==和!=来讲Equals(),甚至那么只有如果用户选择,以产生在所有运营商。框架不需要相等运算符来了解对象相等。 基本上,.NET框架不关心这些运算符,只关心几种Equals方法。要求用户同时定义==和!=运算符的决定完全与语言设计有关,而就.NET而言,与对象语义无关。


17
使用LINQ连接字符串
写老派的最有效方法是什么: StringBuilder sb = new StringBuilder(); if (strings.Count > 0) { foreach (string s in strings) { sb.Append(s + ", "); } sb.Remove(sb.Length - 2, 2); } return sb.ToString(); ...在LINQ中?


30
在.NET中,“ for”或“ foreach”哪个循环运行得更快?
在C#/ VB.NET / .NET中,哪个循环运行得更快,for或者foreach? 自从我读了一个for循环工程快于foreach环路很久以前我以为这对所有集合,泛型集合,所有阵列,等真正站在 我搜寻了Google并发现了几篇文章,但其中大多数没有定论(阅读文章评论)且开放式。 理想的是列出每个方案,并为它们提供最佳解决方案。 例如(仅作为示例): 用于迭代1000个以上的字符串数组- for优于foreach 遍历IList(非通用)字符串- foreach比for 在网上找到了一些相同的参考资料: Emmanuel Schanzer撰写的原始宏大的旧文章 CodeProject FOREACH与。对于 博客- foreach是否接受foreach,这是一个问题 ASP.NET论坛-NET 1.1 C#for与foreach [编辑] 除了可读性之外,我对事实和数据真的很感兴趣。在某些应用程序中,压缩性能优化的最后一步很重要。
345 c#  .net  performance  for-loop 

7
可以将Byte []数组写入C#中的文件吗?
我正在尝试将Byte[]代表完整文件的数组写到 文件中。 来自客户端的原始文件通过TCP发送,然后由服务器接收。接收到的流被读取到字节数组,然后发送给该类进行处理。 这主要是为了确保接收TCPClient准备好用于下一个流,并将接收端与处理端分开。 所述FileStream类不采取一个字节数组作为参数或另一个流对象(它允许你写字节到它)。 我的目标是通过与原始线程不同的线程(使用TCPClient的线程)来完成处理。 我不知道该如何实现,该怎么办?
344 c#  .net 

13
调用线程无法访问该对象,因为其他线程拥有它
我的代码如下 public CountryStandards() { InitializeComponent(); try { FillPageControls(); } catch (Exception ex) { MessageBox.Show(ex.Message, "Country Standards", MessageBoxButton.OK, MessageBoxImage.Error); } } /// <summary> /// Fills the page controls. /// </summary> private void FillPageControls() { popUpProgressBar.IsOpen = true; lblProgress.Content = "Loading. Please wait..."; progress.IsIndeterminate = true; worker = new BackgroundWorker(); worker.DoWork += …

12
读取和写入文件的最简单方法
读写文件有很多不同的方法(文本文件在C#,而不是二进制文件)。 我只需要一些简单且使用最少代码的东西,因为我将在项目中处理很多文件。我只需要一些东西,string因为我所需要的只是读写string。
341 c#  .net  string  file  file-io 


13
使用C#进行URL编码
我有一个应用程序,该应用程序将POST请求发送到VB论坛软件并登录某人(不设置cookie或任何东西)。 用户登录后,我将创建一个变量,该变量将在其本地计算机上创建路径。 c:\ tempfolder \ date \用户名 问题在于某些用户名抛出“非法字符”异常。例如,如果我的用户名是mas|fenix,它将引发异常。 Path.Combine( _ Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), _ DateTime.Now.ToString("ddMMyyhhmm") + "-" + form1.username) 我不想从字符串中删除它,但是通过服务器上的FTP创建了一个带有用户名的文件夹。这引出了我的第二个问题。如果我在服务器上创建文件夹,可以保留“非法字符”吗?我之所以只问这是因为服务器是基于Linux的,所以我不确定Linux是否接受它。 编辑:似乎URL编码不是我想要的。这是我想做的: old username = mas|fenix new username = mas%xxfenix 其中%xx是ASCII值或其他易于识别字符的值。
340 c#  .net  urlencode 


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.