Questions tagged «c#»

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

8
禁止显示“警告CS4014:因为未等待此调用,所以将继续执行当前方法…”
这不是“如何在不等待的情况下安全地在C#中调用异步方法”的重复。 如何很好地抑制以下警告? 警告CS4014:由于未等待此调用,因此在调用完成之前将继续执行当前方法。考虑将“ await”运算符应用于调用结果。 一个简单的例子: static async Task WorkAsync() { await Task.Delay(1000); Console.WriteLine("Done!"); } static async Task StartWorkAsync() { WorkAsync(); // I want fire-and-forget // more unrelated async/await stuff here, e.g.: // ... await Task.Delay(2000); } 我尝试过但不喜欢的内容: static async Task StartWorkAsync() { #pragma warning disable 4014 WorkAsync(); // I want …
156 c#  async-await 


11
如何将SecureString转换为System.String?
除了通过创建System.String来保护SecureString的不安全之外,还有其他保留意见,该怎么做? 如何将普通的System.Security.SecureString转换为System.String? 我敢肯定,许多熟悉SecureString的人都会做出回应,那就是永远不要将SecureString转换为普通的.NET字符串,因为它会删除所有安全保护措施。 我知道。但是现在,我的程序无论如何都使用普通字符串完成所有操作,并且我试图提高其安全性,尽管我将使用向我返回SecureString的API,但我并没有尝试使用它来提高安全性。 我知道Marshal.SecureStringToBSTR,但是我不知道如何获取该BSTR并从中创建System.String。 对于那些可能想知道我为什么要这样做的人,我从用户处获取密码,并将其以html表单POST的形式提交,以将用户登录到网站。所以...这实际上必须使用托管的未加密缓冲区来完成。如果我什至可以访问非托管,未加密的缓冲区,我想我可以在网络流上逐字节写入流,并希望这样可以使密码始终保持安全。我希望至少对这些情况中的一种有一个答案。
156 c#  .net  security  encryption 



8
如何从.net中的IEnumerable <T>获取第一个元素?
我经常想抓住IEnumerable&lt;T&gt;.net 的第一个元素,但是我还没有找到一种很好的方法。我想出的最好的是: foreach(Elem e in enumerable) { // do something with e break; } !那么,有没有很好的方法可以做到这一点?
156 c#  .net 

8
是否可以等待事件而不是其他异步方法?
在我的C#/ XAML Metro应用程序中,有一个按钮可以启动一个长期运行的过程。因此,按照建议,我使用async / await来确保UI线程不会被阻塞: private async void Button_Click_1(object sender, RoutedEventArgs e) { await GetResults(); } private async Task GetResults() { // Do lot of complex stuff that takes a long time // (e.g. contact some web services) ... } 有时,GetResults中发生的事情可能需要其他用户输入才能继续。为了简单起见,假设用户只需单击“继续”按钮。 我的问题是:如何以等待事件的方式暂停GetResults的执行诸如单击另一个按钮之类? 这是实现我要寻找的方法的丑陋方式:“继续”的事件处理程序”按钮设置了一个标志... private bool _continue = false; private void …

29
为什么拒绝访问路径?
我在尝试删除文件时遇到问题,但出现异常。 if (result == "Success") { if (FileUpload.HasFile) { try { File.Delete(Request.PhysicalApplicationPath + app_settings.login_images + txtUploadStatus.Text); string filename = Path.GetFileName(btnFileUpload.FileName); btnFileUpload.SaveAs(Request.PhysicalApplicationPath + app_settings.login_images + filename); } catch (Exception ex) { Message(ex.ToString()); } } } 另外,我应该注意,我尝试从中删除的文件夹对网络服务具有完全控制权。 完整的异常消息为: System.UnauthorizedAccessException:拒绝访问路径'C:\ Users \ gowdyn \ Documents \ Visual Studio 2008 \ Projects \ hybrid …



8
比较两个对象的属性以发现差异?
我有两个相同类型的对象,我想遍历每个对象的公共属性,并提醒用户哪些属性不匹配。 是否可以在不知道对象包含哪些属性的情况下执行此操作?
155 c#  .net 

3
MVC4捆绑包中的{version}通配符
在MVC 4中,我们有捆绑包。在定义捆绑包时,我们可以对文件夹中的所有文件使用*之类的通配符。 在下面的示例中是什么-{version}意思? public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); }

10
C#中的浮点数学是否一致?是真的吗?
不,这不是另一个“为什么(1 / 3.0)* 3!= 1”问题。 最近,我一直在阅读有关浮点的文章;具体而言,相同的计算如何在不同的体系结构或优化设置上产生不同的结果。 对于存储重放或对等网络(而不是服务器-客户端)的视频游戏来说,这是一个问题,它们依赖于所有客户端在每次运行程序时都产生完全相同的结果-一个小小的差异浮点计算可能导致不同机器(甚至同一台机器上!)的游戏状态发生极大的变化。 即使在“遵循” IEEE-754的处理器之间也会发生这种情况,主要是因为某些处理器(即x86)使用双精度扩展精度。也就是说,它们使用80位寄存器进行所有计算,然后将其截断为64位或32位,从而导致舍入结果与使用64位或32位计算的机器不同。 我在线上已经看到了针对此问题的几种解决方案,但是所有解决方案都是针对C ++而不是C#: double使用_controlfp_s(Windows),_FPU_SETCW(Linux?)或fpsetprec(BSD)禁用双精度扩展模式(以便所有计算均使用IEEE-754 64位)。 始终以相同的优化设置运行相同的编译器,并要求所有用户具有相同的CPU架构(禁止跨平台使用)。因为我的“编译器”实际上是JIT,所以每次运行程序时它的优化方式都可能不同,所以我认为这是不可能的。 使用定点算法,float并double完全避免。decimal可以用于此目的,但是会慢很多,并且没有System.Math库函数支持它。 那么,这甚至在C#中是一个问题吗? 如果我仅打算支持Windows(不支持Mono)怎么办? 如果是,是否有任何方法可以强制我的程序以正常的双精度运行? 如果没有,是否有任何库可以帮助保持浮点计算的一致性?

11
如何在C#中比较标志?
我下面有一个标志枚举。 [Flags] public enum FlagTest { None = 0x0, Flag1 = 0x1, Flag2 = 0x2, Flag3 = 0x4 } 我无法使if语句评估为true。 FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2; if (testItem == FlagTest.Flag1) { // Do something, // however This is never true. } 我如何才能做到这一点?
155 c#  .net  enums  attributes  flags 

18
C#3.0自动属性-是否有用?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 改善这个问题 注意:这是我刚开始使用C#时发布的。凭借2014年的知识,我可以真正地说出,自动属性是C#语言有史以来最好的事情之一。 我习惯于使用私有字段和公共字段在C#中创建属性: private string title; public string Title { get { return title; } set { title = value; } } 现在,在.NET 3.0中,我们获得了自动属性: public string Title { get; set; } 我知道这更多是一个哲学/主观的问题,但是除了为每个字段保存五行代码外,是否有任何理由使用这些自动属性?我个人的抱怨是,这些财产对我来说是藏起来的东西,而且我不是黑魔法的忠实拥护者。 实际上,隐藏的私有字段甚至不会显示在调试器中,考虑到get / set函数什么都不做的事实,这是可以的。但是,当我想实际实现一些getter / setter逻辑时,无论如何我都必须使用私有/公共对。 我看到的好处是,我节省了很多代码(一行vs六行),而不会在以后失去更改getter / setter逻辑的能力,但是话又说回来,我已经可以通过简单地声明一个公共字段“ Public string Title”来做到这一点。 {获取;组; }块,从而节省更多代码。 那么,我在这里想念什么?为什么有人实际上要使用自动属性?

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.