Questions tagged «c#»

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


10
如何使用ASP.NET Core从查询字符串读取值?
我正在使用ASP.NET Core MVC构建一个RESTful API,并且我想使用querystring参数来指定对返回集合的资源的过滤和分页。 在那种情况下,我需要读取在querystring中传递的值以进行过滤并选择要返回的结果。 我已经发现在控制器Get动作内部访问HttpContext.Request.Query返回一个IQueryCollection。 问题是我不知道如何使用它来检索值。实际上,我认为该方法是通过使用例如 string page = HttpContext.Request.Query["page"] 问题是HttpContext.Request.Query["page"]它不会返回字符串,而是返回StringValues。 无论如何,如何使用IQueryCollection来实际读取查询字符串值?

16
NHibernate.MappingException:没有持久性:XYZ
现在,在您说出来之前:我做了 Google,我的hbm.xml文件是 Embedded Resource。 这是我正在调用的代码: ISession session = GetCurrentSession(); var returnObject = session.Get<T>(Id); 这是我的班级映射文件: <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="HQData.Objects.SubCategory, HQData" table="SubCategory" lazy="true"> <id name="ID" column="ID" unsaved-value="0"> <generator class="identity" /> </id> <property name="Name" column="Name" /> <property name="NumberOfBuckets" column="NumberOfBuckets" /> <property name="SearchCriteriaOne" column="SearchCriteriaOne" /> <bag name="_Businesses" cascade="all"> <key column="SubCategoryId"/> …
134 c#  .net  nhibernate 

1
将List <t> .add()添加到另一个列表
我有一个IEnumerable&lt;TravelDetails&gt;,我正在尝试将for-loop中的值添加到a中List&lt;TravelDetails&gt;。我不断收到错误消息。 错误15参数1:无法从'System.Collections.Generic.List'转换为'TrafficCore.DataObjects.TripDetails'C:\ TrafficNew \ TI 511-Web \ Traffic 2.0 \ 511Traffic \ 511Traffic \ Models \ DrivingTime.cs 我的代码是 List&lt;TripDetails&gt; tripDetailsCollection = new List&lt;TripDetails&gt;(); foreach (DrivingTimeRoute dtr in dtRoutes) { foreach (Trip trip in dtr.Trips) { foreach (TripPathLink tpl in trip.TripPathLinks) { tplCollection.Add(tpl); } IEnumerable&lt;TripDetails&gt; tripDetails = //long Linq-to-Sql here List&lt;TripDetails&gt; …
134 c#  .net  linq 

5
实际使用`stackalloc`关键字
用stackallocC#编程时有没有人真正使用过?我知道它是做什么的,但是它唯一一次出现在我的代码中是偶然的,因为例如Intellisense在我开始键入时就建议这样static做。 尽管它与的使用情况无关stackalloc,但实际上我在我的应用程序中做了相当多的旧互操作,因此我时不时地可以诉诸使用unsafe代码。但是,尽管如此,我通常会找到unsafe完全避免的方法。 而且由于.Net中单个线程的堆栈大小约为1Mb(如果我写错了,请纠正我),因此我对使用保留了更多stackalloc。 在某些实际情况下,有人会说:“对于我来说,使用不安全的数据和处理量恰到好处stackalloc”?
134 c#  keyword  stackalloc 

4
为什么Environment.Exit()不再终止程序?
这是几天前我发现的,从这个问题中我得到的确认不仅仅限于我的机器。 进行复制的最简单方法是启动Windows Forms应用程序,添加按钮并编写以下代码: private void button1_Click(object sender, EventArgs e) { MessageBox.Show("yada"); Environment.Exit(1); // Kaboom! } Exit()语句执行后,程序失败。在Windows窗体上,您会收到“错误创建窗口句柄”。 启用非托管调试可以使事情更加清晰。在COM模式循环正在执行,并允许待递送WM_PAINT消息。这对处置形式是致命的。 到目前为止,我收集到的唯一事实是: 它不仅限于与调试器一起运行。没有一个,这也会失败。同样糟糕的是,WER崩溃对话框显示了两次。 它与过程的复杂性无关。wow64层是非常臭名昭著的,但是AnyCPU构建会以相同的方式崩溃。 它与.NET版本无关,4.5和3.5崩溃的方式相同。 退出代码无关紧要。 在调用Exit()之前调用Thread.Sleep()不能解决该问题。 在Windows 8的64位版本上会发生这种情况,并且Windows 7似乎不会以相同的方式受到影响。 这应该是相对较新的行为,我之前从未见过。我没有看到通过Windows Update交付的相关更新,尽管更新历史记录在我的计算机上不再准确。 这是严重破坏行为。您将在AppDomain.UnhandledException的事件处理程序中编写这样的代码,并且崩溃的方式相同。 我对您可以采取什么措施来避免此崩溃特别感兴趣。特别是AppDomain.UnhandledException场景使我感到困惑;没有很多方法来终止.NET程序。请注意,在事件处理程序中对UnhandledException调用Application.Exit()或Form.Close()无效,因此它们不是解决方法。 更新:Mehrdad指出终结器线程可能是问题的一部分。我想我已经看到了,也看到了2秒超时的一些证据,表明CLR提供了终结器线程来完成执行。 终结器位于NativeWindow.ForceExitMessageLoop()中。这里有一个IsWindow()Win32函数,它大致与代码位置相对应,在32位模式下查看机器代码时,偏移量为0x3c。似乎IsWindow()处于死锁状态。我无法获得内部的良好堆栈跟踪,但是,调试器认为P / Invoke调用刚刚返回。这很难解释。如果您可以获得更好的堆栈跟踪,那么我很乐意看到它。矿: System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.ForceExitMessageLoop() + 0x3c bytes System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.Finalize() + 0x16 bytes [Native to Managed Transition] kernel32.dll!@BaseThreadInitThunk@12() + 0xe bytes …
134 c#  .net  windows 

13
在C#中创建单个项目列表的快捷方式
在C#中,有一个内联快捷方式可以仅用一项实例化List &lt;T&gt;。 我目前正在做: new List&lt;string&gt;( new string[] { "title" } )) 到处都有此代码会降低可读性。我曾想过使用这样的实用方法: public static List&lt;T&gt; SingleItemList&lt;T&gt;( T value ) { return (new List&lt;T&gt;( new T[] { value } )); } 所以我可以做: SingleItemList("title"); 有没有更短/更清洁的方法? 谢谢。
134 c# 

8
数组,堆和堆栈以及值类型
int[] myIntegers; myIntegers = new int[100]; 在上面的代码中,是否是new int [100]在堆上生成数组?根据我通过c#进行的CLR阅读,答案是肯定的。但是我不明白的是,数组内部的实际int发生了什么。因为它们是值类型,所以我想必须将它们装箱,例如,我可以将myIntegers传递给程序的其他部分,如果一直将它们留在程序中,则会使堆栈混乱。还是我错了?我猜想它们会被装箱,并且只要数组存在就可以在堆中生存。
134 c#  arrays  memory  stack  heap 

5
测试对象在C#中是否为通用类型
我想执行一个对象是否为通用类型的测试。我已经尝试了以下方法,但均未成功: public bool Test() { List&lt;int&gt; list = new List&lt;int&gt;(); return list.GetType() == typeof(List&lt;&gt;); } 我做错了什么以及如何执行此测试?
134 c#  .net  generics  reflection  types 

6
如何将WiX安装程序版本设置为当前内部版本?
我编写了一个应用程序及其WiX安装程序,并使用Subversion将其置于版本控制下。WiX安装程序生成时,我希望其版本号为应用程序的当前生成版本。我该如何完成?我使用c#编写应用程序代码。 注意:我正在使用ccnet构建该项目
134 c#  svn  wix 

9
Web API放置请求生成Http 405方法不允许错误
这是PUT对我的Web API上的方法的调用-方法的第三行(我从ASP.NET MVC前端调用Web API): client.BaseAddress是http://localhost/CallCOPAPI/。 这里是contactUri: 这里是contactUri.PathAndQuery: 最后,这是我的405回复: 这是我的Web API项目中的WebApi.config: public static void Register(HttpConfiguration config) { config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); config.Routes.MapHttpRoute( name: "DefaultApiGet", routeTemplate: "api/{controller}/{action}/{regionId}", defaults: new { action = "Get" }, constraints: new { httpMethod = new HttpMethodConstraint("GET") }); var …




5
C#6中的长字符串插值线
我发现,虽然将字符串插值应用于我现有代码库的字符串Format调用确实非常好,但考虑到通常首选的列限制,字符串对于单行来说很快就会变得太长。尤其是当要插入的表达式很复杂时。使用格式字符串,您可以获得一个可以分成多行的变量列表。 var str = string.Format("some text {0} more text {1}", obj1.property, obj2.property); 有人有打破这些界限的偏爱方法吗? 我想你可以做这样的事情: var str = $"some text { obj1.property }" + " more text { obj2.property };
134 c#  c#-6.0 

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.