Questions tagged «c#»

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

7
KeyValuePair的默认值
我有一个类型的对象IEnumerable<KeyValuePair<T,U>> keyValueList,我正在使用 var getResult= keyValueList.SingleOrDefault(); if(getResult==/*default */) { } else { } getResult如果找不到正确的元素,如何检查默认值? 我无法检查它是否null存在,因为它KeyValuePair是一个结构。
392 c#  key-value 


11
在C#中将大文件读入字节数组的最佳方法?
我有一个Web服务器,它将大的二进制文件(几兆字节)读入字节数组。服务器可能同时读取多个文件(不同的页面请求),因此我正在寻找最优化的方式来执行此操作,而又不会给CPU带来太多负担。下面的代码足够好吗? public byte[] FileToByteArray(string fileName) { byte[] buff = null; FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); long numBytes = new FileInfo(fileName).Length; buff = br.ReadBytes((int) numBytes); return buff; }

15
枚举“继承”
我在低级名称空间中有一个枚举。我想在“继承”低级枚举的中级命名空间中提供一个类或枚举。 namespace low { public enum base { x, y, z } } namespace mid { public enum consume : low.base { } } 我希望这是可能的,或者希望可以使用某种类来代替枚举消耗,这将为枚举提供抽象层,但仍允许该类的实例访问枚举。 有什么想法吗? 编辑:我没有将其转换为类中的const的原因之一是我必须使用的服务需要低级枚举。我得到了WSDL和XSD,它们将结构定义为枚举。该服务无法更改。
391 c#  .net  enums 

3
返回传递给方法的值
我在接口上有一个方法: string DoSomething(string whatever); 我想用最小起订量来模拟它,以便它返回传入的内容-类似于: _mock.Setup( theObject => theObject.DoSomething( It.IsAny<string>( ) ) ) .Returns( [the parameter that was passed] ) ; 有任何想法吗?
390 c#  mocking  moq 


14
无法在LINQ to Entities查询中构造实体
由实体框架生成的实体类型称为产品。我已经写了这个查询 public IQueryable<Product> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID== categoryID select new Product { Name = p.Name}; } 下面的代码引发以下错误: “无法在LINQ to Entities查询中构造实体或复杂类型Shop.Product” var products = productRepository.GetProducts(1).Tolist(); 但是当我使用select p代替select new Product { Name = p.Name};它时,它可以正常工作。 如何执行自定义选择部分?

9
C#获取%AppData%的路径
C#2008 SP1 我正在使用以下代码: dt.ReadXml("%AppData%\\DateLinks.xml"); 但是,我遇到一个异常,该异常指向我的应用程序从以下位置运行的位置: 找不到路径“ D:\ Projects \ SubVersionProjects \ CatDialer \ bin \ Debug \%AppData%\ DateLinks.xml”的一部分。 我以为%AppData%应该找到相对路径。当我去的时候,Start|Run|%AppData%Windows资源管理器会将我带到该目录。 由于每台客户端计算机上的用户都不相同,因此无法输入完整路径。
387 c#  .net  path 


15
异步等待Task <T>超时完成
我想等待Task &lt;T&gt;完成一些特殊规则:如果X毫秒后仍未完成,我想向用户显示一条消息。如果它在Y毫秒后仍未完成,我想自动请求cancel。 我可以使用Task.ContinueWith异步地等待任务完成(即,安排在任务完成时执行的动作),但这不允许指定超时。我可以使用Task.Wait来同步等待任务完成并超时,但这会阻塞我的线程。如何异步等待任务完成并超时?

19
如何在ASP.NET中获取用户的客户端IP地址?
我们必须Request.UserHostAddress在ASP.NET中获取IP地址,但这通常是用户的ISP的IP地址,而不完全是例如单击链接的用户的计算机IP地址。如何获得真实的IP地址? 例如,在Stack Overflow用户配置文件中,它是:“上次帐户活动:从86.123.127.8开始的4小时前”,但是我的计算机IP地址有些不同。Stack Overflow如何获得该地址? 在某些Web系统中,出于某些目的需要进行IP地址检查。例如,使用某个IP地址,用户是否可以每24小时仅点击5次下载链接?此IP地址应该是唯一的,而不是对于拥有大量客户端或Internet用户的ISP。 我听得懂吗
387 c#  asp.net  client  ip-address 

12
哪些.NET依赖注入框架值得研究?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 哪些C#/。NET依赖注入框架值得研究?您能说出它们的复杂性和速度。

18
在CLR中投放与使用'as'关键字
在对接口进行编程时,我发现我正在做大量的转换或对象类型转换。 这两种转换方法之间有区别吗?如果是这样,是否存在成本差异,或者这对我的计划有何影响? public interface IMyInterface { void AMethod(); } public class MyClass : IMyInterface { public void AMethod() { //Do work } // Other helper methods.... } public class Implementation { IMyInterface _MyObj; MyClass _myCls1; MyClass _myCls2; public Implementation() { _MyObj = new MyClass(); // What is the difference here: …
386 c#  casting  clr 

10
未定义或导入预定义类型“ System.ValueTuple´2”
我已经安装了Visual Studio 15 Preview 3,并尝试使用新的元组功能 static void Main(string[] args) { var x = DoSomething(); Console.WriteLine(x.x); } static (int x, int y) DoSomething() { return (1, 2); } 编译时出现错误: 未定义或导入预定义类型“ System.ValueTuple´2” 根据博客文章,此功能默认情况下应处于“启用”状态。 我做错什么了?

7
.NET中是否存在僵尸……?
我正在与队友讨论锁定.NET的问题。他是一个非常聪明的人,在低级和高级编程方面都有广泛的背景,但是他在低级编程方面的经验远远超过了我。无论如何,他认为应该在可能承受重负载的关键系统上避免.NET锁定,以免“僵尸线程”崩溃的可能性很小。我通常使用锁定,但我不知道“僵尸线程”是什么,所以我问。我从他的解释中得到的印象是,僵尸线程是已终止但仍保留了某些资源的线程。他举了一个关于僵尸线程如何破坏系统的示例,该示例是线程在锁定某个对象后开始执行某些过程,然后在可以释放锁之前终止。这种情况有可能使系统崩溃,因为最终尝试执行该方法将导致线程全部等待访问永远不会返回的对象,因为使用锁定对象的线程已死。 我想我明白了要点,但是如果我不在基地,请告诉我。这个概念对我来说很有意义。我并不完全相信这是.NET中可能发生的真实情况。我以前从未听说过“僵尸”,但我确实认识到在较低级别进行过深入研究的程序员往往对计算基础(例如线程)有更深的了解。我确实确实看到了锁定的价值,而且我看到许多世界一流的程序员都在利用锁定。我也没有能力自己评估这一点,因为我知道该lock(obj)语句实际上仅是以下方面的语法糖: bool lockWasTaken = false; var temp = obj; try { Monitor.Enter(temp, ref lockWasTaken); { body } } finally { if (lockWasTaken) Monitor.Exit(temp); } 并且因为Monitor.Enter和Monitor.Exit被标记extern。可以想象.NET进行了某种处理,以保护线程免于暴露于可能造成这种影响的系统组件,但这纯粹是推测性的,并且可能基于我从未听说过“僵尸线程”的事实。之前。因此,我希望可以在这里获得一些反馈: 是否有比我在此解释的“僵尸线程”更清晰的定义? 僵尸线程可以出现在.NET上吗?(为什么/为什么不呢?) 如果适用,如何在.NET中强制创建僵尸线程? 如果适用,如何在不冒险使用.NET中僵尸线程的情况下利用锁定? 更新资料 两年多前,我问了这个问题。今天,这件事发生了:

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.