Questions tagged «c#»

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

7
在request.Files上进行foreach
我正在尝试在ASP.NET MVC中上传多个文件,并且我的控制器中有这个简单的foreach循环 foreach (HttpPostedFileBase f in Request.Files) { if (f.ContentLength > 0) FileUpload(f); } 先前的代码会产生此错误: Unable to cast object of type 'System.String' to type 'System.Web.HttpPostedFile'. 我不明白的是为什么Request.Files [1]返回HttpPostedFileBase,但是当它进行迭代时,它返回字符串(大概是文件名)。 注意:我知道这可以通过for循环解决。另外,我尝试使用HttpPostedFile,但出现相同的错误。


6
检查LINQ的FirstOrDefault是否存在KeyValuePair
我有一个类型的字典 Dictionary<Guid,int> 我想使用条件返回满足条件的第一个实例 var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0) 但是,如何检查我是否真的在找回KeyValuePair?我似乎无法使用!=或==在没有编译器错误的情况下检查default(KeyValuePair)。有一个类似的线程在这里并不十分似乎有一个解决方案。实际上,我可以通过获取密钥并检查Guid的默认值来解决我的特定问题,但是我很好奇是否可以通过keyvaluepair做到这一点。谢谢
75 c#  linq  null 

1
在文件路径中使用环境变量
我有一个指向特定文件夹的环境变量集(例如,称为MYFOLDER)。在%MYFOLDER%\SubFolderWindows资源管理器中键入时,将显示子文件夹。但是,当我传递SelectedPath = @"%MYFOLDER%\SubFolder";给时FolderBrowserDialog,它不起作用。 我尝试使用Path.GetFullPath(..),但这似乎返回了可执行文件的bin文件夹(在VS中调试时),最后以%MYFOLDER%代替了我期望的路径。 有人知道如何正确使用环境变量吗?

2
ILookup接口与IDictionary
如何在ILookup<key, value>界面有所不同IDictionary<key, value>? 我不明白该ILookup接口的用途。
75 c#  .net 

4
了解C#中的异步/等待
我开始学习C#5.0中的异步/等待,但我一点也不了解。我不明白如何将其用于并行性。我尝试了以下非常基本的程序: using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Task task1 = Task1(); Task task2 = Task2(); Task.WaitAll(task1, task2); Debug.WriteLine("Finished main method"); } public static async Task Task1() { await new Task(() => …
75 c#  async-await 

4
如何使用log4net记录跟踪消息?
我正在使用log4net将写入日志消息记录到滚动日志文件中。 现在,我还将所有跟踪消息从重定向System.Diagnostics.Trace到该日志文件。我该如何配置?我试图在log4net文档中找到有关此内容的任何内容,但均未成功。有可能吗? 我想要这样做的原因是因为我对第三方库的跟踪消息感兴趣。 <log4net> <appender name="R1" type="log4net.Appender.RollingFileAppender"> <file value="C:\Logs\MyService.log" /> <appendToFile value="true" /> <rollingStyle value="Date" /> <maxSizeRollBackups value="10" /> <datePattern value="yyyyMMdd" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> </layout> </appender> </log4net>
75 c#  .net  log4net 


4
是否可以保证Task.Factory.StartNew()使用调用线程以外的其他线程?
我正在从一个函数启动一个新任务,但我不希望它在同一线程上运行。我不在乎它在哪个线程上运行,只要它在另一个线程上即可(因此在此问题中无济于事)。 我是否保证下面的代码TestLock在Task t再次允许输入之前总是退出?如果不是,为防止重入,推荐的设计模式是什么? object TestLock = new object(); public void Test(bool stop = false) { Task t; lock (this.TestLock) { if (stop) return; t = Task.Factory.StartNew(() => { this.Test(stop: true); }); } t.Wait(); } 编辑:根据乔恩·斯凯特(Jon Skeet)和史蒂芬·图布(Stephen Toub)的以下回答,一种确定性地防止重入的简单方法是传递CancellationToken,如以下扩展方法所示: public static Task StartNewOnDifferentThread(this TaskFactory taskFactory, Action action) { return taskFactory.StartNew(action: action, cancellationToken: …

11
如何在ASP.NET C#中使用foreach获取CheckBoxList中选定项的值?
我有一个这样的CheckBoxList: <asp:CheckBoxList ID="CBLGold" runat="server" CssClass="cbl"> <asp:ListItem Value="TGJU"> TG </asp:ListItem> <asp:ListItem Value="GOLDOZ"> Gold </asp:ListItem> <asp:ListItem Value="SILVEROZ"> Silver </asp:ListItem> <asp:ListItem Value="NERKH"> NE </asp:ListItem> <asp:ListItem Value="TALA"> Tala </asp:ListItem> <asp:ListItem Value="YARAN"> Sekeh </asp:ListItem> </asp:CheckBoxList> 现在,我想使用foreach从此CheckBoxList中获取所选项目的值,并将其放入列表中。

2
SpinWait与睡眠等待。使用哪一个?
它有效吗 SpinWait.SpinUntil(() => myPredicate(), 10000) 超时10000ms 要么 Thread.Sleep在相同条件下使用轮询是否更有效?例如,遵循以下SleepWait功能: public bool SleepWait(int timeOut) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); while (!myPredicate() && stopwatch.ElapsedMilliseconds < timeOut) { Thread.Sleep(50) } return myPredicate() } 我担心如果谈论的是超过1秒的超时,那么SpinWait的所有收益可能都不是一个好的用法模式?这是一个有效的假设吗? 您喜欢哪种方法,为什么?还有另一种更好的方法吗? 更新-变得更加具体: 有没有办法让BlockingCollection Pulse在达到限制容量时成为休眠线程?我宁可避免像马克·格雷夫(Marc Gravel)所说的那样忙碌地等待。

11
如何以编程方式更改文件位置?
我对Log4net完全陌生。我设法通过添加配置文件和简单的日志记录来解决问题。我已经将值硬编码为,"C:\temp\log.txt"但这还不够好。 日志必须转到特殊文件夹 path = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 并且此路径会根据您使用的是Windows Server 2008,Windows XP还是Vista等而改变... 如何仅以编程方式更改log4net中文件的位置? 这是我所做的: <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/> </configSections> <log4net> <root> <level value="DEBUG" /> <appender-ref ref="LogFileAppender" /> </root> <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> <param name="File" value="C:\temp\log.txt" /> <param name="AppendToFile" value="true" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> …
75 c#  log4net 

6
将`List <string>`转换为逗号分隔的字符串
有没有一种快速的方法可以转换List&lt;string&gt;为用stringC#逗号分隔? 我是这样做的,但是也许有更快或更有效的方法吗? List&lt;string&gt; ls = new List&lt;string&gt;(); ls.Add("one"); ls.Add("two"); string type = string.Join(",", ls.ToArray()); PS:在此站点上搜索,但是大多数解决方案是针对Java或Python的
75 c#  asp.net 

14
CLR类型到EDM类型的映射在EF 6和5中不明确?
请任何人可以帮助我解决此错误? 指定的架构无效。错误: CLR类型到EDM类型的映射不明确,因为多个CLR类型与EDM类型“ City_DAL”匹配。先前找到的CLR类型为“ CeossDAL.City_DAL”,新近发现的CLR类型为“ CeossBLL.City_DAL”。 我有DAL的主要问题,它包含EF和BLL,并且包含DAL的相同类,但名称空间不同,这是导致问题的原因 我不知道该如何解决这些问题,请您能帮帮我吗? 如果有人给我示例以在EF中使用n层架构,我也将不胜感激 谢谢

2
无法在HttpResponseMessage标头上设置Content-Type标头?
我正在使用ASP.NET WebApi创建RESTful API。我正在一个控制器中创建一个PUT方法,代码如下所示: public HttpResponseMessage Put(int idAssessment, int idCaseStudy, string value) { var response = Request.CreateResponse(); if (!response.Headers.Contains("Content-Type")) { response.Headers.Add("Content-Type", "text/plain"); } response.StatusCode = HttpStatusCode.OK; return response; } 当我通过浏览器通过AJAX放置到该位置时,它给了我这个异常: 标头名称滥用。确保请求标头与HttpRequestMessage一起使用,响应标头与HttpResponseMessage一起使用,内容标头与HttpContent对象一起使用。 但是Content-Type响应不是完全有效的标头吗?为什么会出现此异常?

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.