Questions tagged «c#»

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

30
您最喜欢的不是内置的LINQ to Objects运算符是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 去年关闭。 改善这个问题 使用扩展方法,我们可以编写方便的LINQ运算符来解决通用问题。 我想听听System.Linq命名空间中缺少哪些方法或重载以及如何实现它们。 最好使用可能使用现有方法的简洁明了的实现。

6
托管和非托管代码,内存和大小有什么区别?
在看到和聆听了很多有关托管和非托管代码的知识之后,并且知道唯一的区别是托管是关于CLR的,而非托管是在CLR之外的,这让我非常好奇要详细了解它。托管和非托管代码,内存和大小到底是什么? 这是C#代码时,如何在C#中编写的代码不被托管,以及如何使大小的内存变为非托管。一个例子和一点见识会有所帮助。
71 c#  .net  unmanaged  managed 


8
通用类型检查
有没有一种方法可以强制/限制传递给基元的类型? (布尔,整数,字符串等) 现在,我知道您可以通过where子句将泛型类型参数限制为类型或接口实现。但是,这并不适合基元(AFAIK),因为它们并不具有共同点(除了对象之前有人说过!:P)。 因此,我目前的想法是咬紧牙关,做一个大的switch语句,并在失败时抛出ArgumentException。 编辑1: 只是澄清一下: 代码定义应类似于: public class MyClass<GenericType> .... 和实例化: MyClass<bool> = new MyClass<bool>(); // Legal MyClass<string> = new MyClass<string>(); // Legal MyClass<DataSet> = new MyClass<DataSet>(); // Illegal MyClass<RobsFunkyHat> = new MyClass<RobsFunkyHat>(); // Illegal (but looks awesome!) 编辑2 @Jon Limjap-好点了,我已经考虑过了。.我确定有一种通用方法可以用来确定类型是值类型还是引用类型。 这在立即删除许多我不想处理的对象时可能很有用(但是您需要担心所使用的结构,例如Size)。有趣的问题不是吗?:) 这里是: where T : struct 取自MSDN。 我很好奇..这可以在.NET …

10
具有相同键的对象已存在于ObjectStateManager中。ObjectStateManager无法使用相同的键跟踪多个对象
尝试将EF5与通用存储库模式结合使用,并使用ninject进行依赖关系注入,并尝试使用带有edmx的存储过程将实体更新到数据库时遇到问题。 我在DbContextRepository.cs中的更新是: public override void Update(T entity) { if (entity == null) throw new ArgumentException("Cannot add a null entity."); var entry = _context.Entry<T>(entity); if (entry.State == EntityState.Detached) { _context.Set<T>().Attach(entity); entry.State = EntityState.Modified; } } 从我的AddressService.cs返回到我的存储库,我有: public int Save(vw_address address) { if (address.address_pk == 0) { _repo.Insert(address); } else { _repo.Update(address); …

8
将C#连接到Oracle数据库所需的最小客户端资源是多少?
通过在笔记本电脑上下载并安装客户端管理工具和Visual Studio 2008,我已经从C#(Visual Studio 2008)成功连接到Oracle数据库(10g)。 Oracle Client工具的安装占用空间超过200Mb,而且运行时间很长。 有谁知道最小可行的占地面积是多少?我希望这是一个DLL和一个register命令,但是我感觉我需要安装一个oracle home,并设置各种环境变量。 我在代码中使用Oracle.DataAccess。
71 c#  oracle  client 

5
BackgroundWorker中未处理的异常
我的WinForms应用程序使用许多BackgroundWorker对象从数据库检索信息。我之所以使用BackgroundWorker,是因为它允许UI在长时间运行的数据库查询期间保持畅通无阻,并且为我简化了线程模型。 我在其中某些后台线程中偶尔遇到DatabaseException,并且在调试时目睹了在工作线程中至少有这些异常之一。我非常相信这些异常是超时,我认为它是不时会发生的合理事件。 我的问题是,在这些后台工作线程之一中发生未处理的异常时会发生什么。 我认为我无法在另一个线程中捕获异常,但是我可以期望执行我的WorkerCompleted方法吗?是否可以查询BackgroundWorker的任何属性或方法来处理异常?

30
您所看到的扩展方法的最佳或最有趣的用法是什么?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 9年前关闭。 我开始真的很喜欢扩展方法...我想知道她是不是偶然发现了一个真正让他们震惊或只是聪明的人。 我今天写的一个例子: 根据其他用户的评论进行了编辑: public static IEnumerable<int> To(this int fromNumber, int toNumber) { while (fromNumber < toNumber) { yield return fromNumber; fromNumber++; } } 这允许将for循环编写为foreach循环: foreach (int x in 0.To(16)) { Console.WriteLine(Math.Pow(2, x).ToString()); } 我等不及要看其他示例了!请享用!

1
DbQuery.Include()的重载需要lambda到哪里去了?
我刚刚为使用EntityFramework的新项目声明了一些代码优先模型。 public class BlogEntry { public long Id { get; set; } public long AuthorId { get; set; } public DateTime PublishedStamp { get; set; } public string Title { get; set; } public string Text { get; set; } public virtual User Author { get; set; } } public …

2
ASP.NET MVC:使用HtmlHelper.Hidden无法呈现隐藏字段值
我的应用程序发生了一些很奇怪的事情: 我的ViewModel具有以下属性: public int? StakeholderId { get; set; } 它以部分视图的形式呈现,如下所示: <%= Html.Hidden("StakeholderId", Model.StakeholderId) %> 表单被提交,相关的控制器动作生成一个id并更新模型,然后返回与更新后的模型相同的视图 我遇到的问题是,即使StakeholderId现在具有值,隐藏字段在第二次呈现的“ value”属性中也没有任何内容。 如果我只是自己输出值,它将显示在页面上,因此我可以通过执行以下操作来呈现值: <input type="hidden" id="StakeholderId" name="stakeholderId" value="<%: Model.StakeholderId %>" /> 但是,助手没有获取更新的值,这很奇怪? (我使用jQuery提交表单并将操作结果呈现到div中,但是我已经检查过,在jQuery执行任何操作之前,返回的html已经是错误的,因此我认为这与它没有太大关系任何东西) 更新 从那以后,我发现我也可以在控制器操作返回部分视图之前清除相关的ModelState键。

4
对于“可能将值类型与'null'进行比较”我该怎么办?
在为自定义NUnit约束编写此方法时。 private void AddMatchFailure<TExpected, TActual>(string failureName, TExpected expected, TActual actual) { _matchFailures.Add( String.Format(MatchFailureFormat, failureName, (expected == null) ? "null" : expected.ToString(), (actual == null) ? "null" : actual.ToString())); } Resharper警告expected并actual可能是ValueType对象。 例如TExpected是DateTime 预期== null; //但是DateTime是一个结构。 将ValueType与null进行比较时的规则是什么?如何在不通过添加类约束来限制通用参数的情况下编写该方法来解决该问题?
71 c# 


8
.NET应用程序的链接器状态(又名“请问,请问我可以有一个链接器” 2009版)
这里的许多人可能都熟悉Joel Spolsky最受欢迎的博客文章之一,请问先生,我可以有一个链接器吗,他在那儿大声疾呼,希望删除对.NET框架的依赖,以便开发独立的应用程序并出售。 当时,Visual Studio开发团队的Jason Zander回答了他对该主题的看法,认为该主题有些争议-他们主要关心的是在运行时(尤其是其中)解决安全问题的能力。总的来说,少量的开销是值得的。 快进到2009年。现在有几个小组声称拥有C#链接器。(Jason Zander甚至对自己说过,实现一个应用程序并不需要太多。)而不是.NET 1.0这么可爱的十几个meg下载,我们现在有了一个庞大的200-300 mb跨平台的完整.NET 3.5安装程序。包含适用于x86,x64和ia64的.NET版本。Microsoft减少运行时大小的建议包括: 解包可再发行组件,删除不需要的目标平台,然后重新组合在一起 使用仅为您的平台下载库的Web引导程序 使用客户端配置文件安装程序(2008年末新增),该安装程序库有限,仅适用于x86 更糟糕的是,据我了解(如果我错了,请纠正我),客户端配置文件甚至没有在Windows上注册为已安装.NET 3.5。这意味着,如果计算机上安装了多个.NET 3.5客户端应用程序,则彼此之间将不会看到对方,并且将一次又一次地重新安装运行时! 我真的不知道微软在这里想什么。即使假设最坏的情况是针对一个目标平台(例如x64)进行安装,并且只需要包括那些库,您仍然会在应用程序上看到60 mb以上的开销。即使是最著名的.NET应用程序之一,Paint.NET,也由于庞大的.NET依赖关系而难以安装应用程序。 如果他们在分发免费应用程序时遇到问题,那么世界其他地方呢?最后,他们必须制作一个引导程序,该引导程序安装了Microsoft Installer 3.1,.NET运行时引导程序以及所有其他从属库然后才能安装自己的应用程序。 那呢 链接器。是否存在任何良好的应用程序-还是仅一种工具就可以构建C#应用程序而无需用户安装大量的.NET运行时? 更新:因此,看起来有两个选择: 单核细胞增多症: Mono有其自己的链接器。从下面的答案看来,它工作得很好。 。净: 异码似乎是一种可用且有效的工具。 卸载推荐使用,它是VMware推荐的。 Remotesoft还有另一个链接器。他们称其为“混淆器”。有什么想法吗? 由Rustemsoft找到了另一个名为Skater .NET Obfuscator的文件。有人熟悉他们吗? 还提出了微软的ILmerge ; 看起来它只执行部分任务(即合并库,而不剥离未使用的位)。 看来Mono工具正在使用;基于.NET的工具呢?他们还有其他经验吗,还是我们只需要等待Microsoft向所有人推出3.5版本?我不禁思索要推出.NET 4.0需要多长时间...
71 c#  .net  vb.net  mono  linker 

13
Python比Java / C#慢吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 Python比Java / C#慢吗? 性能比较c-java-python-ruby-jython-jruby-groovy 这是一个优化CPython的项目:空载吞咽
71 c#  java  python  performance 

18
无法加载文件或程序集'WebGrease,版本= 1.5.1.25624,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一
我有一个MVC4 Web API项目。运行服务项目时出现错误 无法加载文件或程序集“ WebGrease,版本= 1.5.1.25624,区域性=中性,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。该系统找不到指定的文件。 我已经添加了WebGrease.dll文件,但仍然出现错误 并尝试更改web.config <bindingRedirect oldVersion="0.0.0.0-1.3.0.0"/>" 和 <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />

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.