Questions tagged «c#»

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


11
如何在不等待的情况下安全地在C#中调用异步方法
我有一个async不返回任何数据的方法: public async Task MyAsyncMethod() { // do some stuff async, don't return any data } 我从另一个返回一些数据的方法中调用此方法: public string GetStringData() { MyAsyncMethod(); // this generates a warning and swallows exceptions return "hello world"; } 在MyAsyncMethod()不等待的情况下进行调用会在Visual Studio中引发“ 由于未等待此调用,因此当前方法会在调用完成之前继续运行 ”警告。在该警告的页面上,它指出: 仅当您确定不想等待异步调用完成并且被调用的方法不会引发任何异常时,才应考虑禁止显示警告。 我确定我不想等待通话结束。我不需要或没有时间。但是通话可能会引发异常。 我已经几次遇到这个问题,并且我确定这是一个常见的问题,必须有一个通用的解决方案。 如何安全地调用异步方法而不等待结果? 更新: 对于建议我只是等待结果的人们,这是响应我们Web服务(ASP.NET Web API)上的Web请求的代码。在UI上下文中等待将保持UI线程空闲,但是在Web请求调用中等待将等待Task完成,然后再响应请求,从而无故增加了响应时间。

6
通过索引获取列表项
我最近开始使用c#从Java迁移过来。我似乎找不到如何通过索引获取列表项。在Java中,获取列表的第一项将是: list1.get(0); C#中的等效项是什么?
321 c#  list 

7
堆栈的目的是什么?我们为什么需要它?
因此,我现在正在学习MSIL,以学习调试C#.NET应用程序。 我一直想知道:堆栈的目的是什么? 只是为了回答我的问题: 为什么要从内存转移到堆栈或“加载”?另一方面,为什么要从堆栈转移到内存或“存储”呢? 为什么不将它们全部放置在内存中? 是因为速度更快吗? 是因为它基于RAM吗? 为了效率? 我试图抓住这一点,以帮助我更深入地了解CIL代码。
320 c#  .net  vb.net  cil  .net-assembly 

7
当结果为空时,LINQ返回什么
我对LINQ查询有疑问。通常,查询返回一个IEnumerable<T>类型。如果返回为空,则不确定它是否为null。我不确定以下内容ToList()是否会引发异常,或者List<string>如果IEnumerable结果没有发现,则为空? List<string> list = {"a"}; // is the result null or something else? IEnumerable<string> ilist = from x in list where x == "ABC" select x; // Or directly to a list, exception thrown? List<string> list1 = (from x in list where x == "ABC" select x).ToList(); 我知道这是一个非常简单的问题,但是我暂时没有VS。
319 c#  linq 

11
从线程获取线程ID
例如,在C#中调试线程时,您可以看到每个线程的ID。 我找不到以编程方式获取相同线程的方法。我什至无法获取当前线程的ID(在的属性中Thread.currentThread)。 因此,我想知道Visual Studio如何获取线程的ID,例如,是否有办法获取ID为的线程的句柄2345?
319 c#  .net  multithreading 


29
从字符串中查找并提取数字
我需要查找并提取字符串中包含的数字。 例如,从这些字符串中: string test = "1 test" string test1 = " 1 test" string test2 = "test 99" 我怎样才能做到这一点?
319 c#  .net  regex  string 

8
如何在C#中使用WebClient将数据发布到特定的URL
我需要对WebClient使用“ HTTP Post”将一些数据发布到我拥有的特定URL。 现在,我知道可以使用WebRequest完成此操作,但是由于某些原因,我想改用WebClient。那可能吗?如果是这样,有人可以向我展示一些例子或为我指出正确的方向吗?
319 c#  post  webclient 




11
使用Newtonsoft将JSON反序列化为.NET对象(也许是LINQ到JSON?)
我知道有一些关于Newtonsoft的帖子,所以希望这不是重复...我正在尝试将Kazaa API返回的JSON数据转换为某种不错的对象 WebClient client = new WebClient(); Stream stream = client.OpenRead("http://api.kazaa.com/api/v1/search.json?q=muse&type=Album"); StreamReader reader = new StreamReader(stream); List<string> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(reader.Read().ToString()); foreach (string item in list) { Console.WriteLine(item); } //Console.WriteLine(reader.ReadLine()); stream.Close(); JsonConvert系列只是我正在尝试的最新系列...我不太了解它,希望通过询问大家来消除一些麻烦。我最初试图将其转换为Dictionary或其他内容……实际上,我只需要在那里获取几个值,因此从文档来看,也许Newtonsoft的LINQ to JSON可能是更好的选择?有想法/链接吗? 这是JSON返回数据的示例: { "page": 1, "total_pages": 8, "total_entries": 74, "q": "muse", "albums": [ { "name": "Muse", "permalink": "Muse", …

4
同步等待异步操作,为什么Wait()在这里冻结程序
前言:我在寻找一个解释,而不仅仅是一个解决方案。我已经知道了解决方案。 尽管花了几天时间研究有关基于任务的异步模式(TAP),异步和等待的MSDN文章,但我对某些更详细的信息仍然感到困惑。 我正在为Windows Store Apps编写记录器,并且希望同时支持异步和同步记录。异步方法遵循TAP,同步方法应隐藏所有这些内容,并且外观和工作方式与普通方法类似。 这是异步日志记录的核心方法: private async Task WriteToLogAsync(string text) { StorageFolder folder = ApplicationData.Current.LocalFolder; StorageFile file = await folder.CreateFileAsync("log.log", CreationCollisionOption.OpenIfExists); await FileIO.AppendTextAsync(file, text, Windows.Storage.Streams.UnicodeEncoding.Utf8); } 现在对应的同步方法... 版本1: private void WriteToLog(string text) { Task task = WriteToLogAsync(text); task.Wait(); } 看起来正确,但是不起作用。整个程序永久冻结。 版本2: 嗯..也许任务没有开始? private void WriteToLog(string text) { Task task …

25
找到多个与名为“ Home”的控制器匹配的类型
我目前有两个不相关的MVC3项目在线托管。 一个工作正常,另一个不工作,给我错误: 找到了多个与名为“ Home”的控制器匹配的类型。如果为该请求提供服务的路由('{controller} / {action} / {id}')没有指定名称空间来搜索与该请求匹配的控制器,则可能会发生这种情况。 如果是这种情况,请通过调用带有“名称空间”参数的“ MapRoute”方法的重载来注册此路由。 托管人的工作方式是,他为我提供FTP访问权限,在该文件夹中,我还有另外两个文件夹,每个文件夹用于我的每个应用程序。 ftpFolderA2 / foo.com ftpFolderA2 / bar.com foo.com正常运行,我将应用程序发布到本地文件系统,然后通过FTP传输内容,并且可以正常工作。 当我上传并尝试运行bar.com时,上述问题引发,并阻止了我使用我的网站。尽管foo.com仍然有效。 bar.com是否在ftpFolderA2内的任何地方从控制器进行搜索,这就是为什么它正在寻找另一个HomeController?我如何告诉它仅应在Controller文件夹中查找? 事实: 不使用区域。这是两个完全不相关的项目。我将每个已发布的项目放入每个相应的文件夹中。没有什么花哨。 每个项目只有1个HomeController。 有人可以确认这是问题吗?

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.