Questions tagged «c#»

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

7
.NET源代码可以对调试断点进行硬编码吗?
我正在寻找.NET(尤其是C#,尤其是C#)中的.NET(尤其是C#)来触发调试中断,就像在该点处设置了断点一样,而不必记住在调试器中设置特定的断点,而不影响生产运行时间。 我们的代码需要吞下生产中的异常,因此我们不会破坏链接到我们的客户端应用程序,但是我正在尝试对其进行设置,以便在调试器中运行时弹出此类错误进行分析。 ,否则将被安全地忽略。 我的使用尝试Debug.Assert(false)并不理想,我认为这样Debug.Fail()做的方式相同。从理论上讲,它应该不会对生产产生任何影响,并且在调试时确实会成功停止,但是根据设计,就我所知,如果您想忽略该错误,就无法继续执行,就像实际断点一样,就像在生产中吞下错误一样。显然,这也破坏了对变量状态的评估,因为调试器实际上在本机系统代码中停止运行,而不是在我们的系统中停止运行,因此调试帮助有限。(也许我缺少某种重新回到事物中来查看变量的方法,以此类推。) 我希望有类似的东西Debug.Break(),但它似乎不存在(除非在更高版本的.NET中?),并且Debug似乎也没有其他方法适用。 更新:虽然ctacke的答案最符合我的需求,但此后我也发现了Debug.Assert()的窍门-在调试器中运行时-暂停调试器,转到调试代码。断言待处理的呼叫(由于在框架代码中处于绿色状态,因此以绿色突出显示),然后单击“跳出”(shift-F11),然后在断言对话框中单击“忽略”。这将使调试器在断言返回时暂停(并且可以继续执行,就好像它没有发生一样,因为它被忽略了)。可能还有其他方法可以做很多相同的事情(点击Retry可以更直接地做到这一点吗?),但是这种方法很直观。


11
从UI线程强制进行GUI更新
在WinForms中,如何从UI线程强制立即进行UI更新? 我正在做的大致是: label.Text = "Please Wait..." try { SomewhatLongRunningOperation(); } catch(Exception e) { label.Text = "Error: " + e.Message; return; } label.Text = "Success!"; 在操作之前,标签文本未设置为“ Please Wait ...”。 我使用另一个线程解决了这个问题,但是它变得繁琐,我想简化代码。



8
.Net(dotNet)封装的OpenCV?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 3年前关闭。 改善这个问题 我已经看到了其中的一些。 opencvdotnet,SharperCV,EmguCV,一个on Code Project. 有没有人有任何经验?我在Code Project上玩了一段时间,但是一旦尝试做任何复杂的事情,我就会遇到一些讨厌的不可捕获的异常(即Msgbox异常)。跨平台(支持Mono)是最好的。

20
如何在C#中将HTML转换为文本?
我正在寻找C#代码以将HTML文档转换为纯文本。 我不是在寻找简单的标记剥离方法,而是会输出纯文本并合理保留原始布局的东西。 输出应如下所示: W3C的Html2Txt 我看过HTML Agility Pack,但我认为这不是我所需要的。还有其他建议吗? 编辑:我只是从CodePlex下载HTML Agility Pack ,然后运行Html2Txt项目。多么令人失望(至少是将html转换为文本的模块)!它所做的只是剥离标签,展平表等。输出看起来不像生成的Html2Txt @ W3C。不幸的是,该来源似乎不可用。我一直在寻找是否有更多的“罐头”解决方案可用。 编辑2:谢谢大家的建议。 FlySwat向我提示了我要走的方向。我可以使用System.Diagnostics.Process类的“突降”开关运行lynx.exe将文本发送到标准输出,并与捕获标准输出ProcessStartInfo.UseShellExecute = false和ProcessStartInfo.RedirectStandardOutput = true。我将所有这些都包装在C#类中。只会偶尔调用此代码,因此与在代码中进行操作相比,我不太担心生成新进程。另外,山猫快!
71 c#  html 

14
C#是否可以给我一个不变的字典?
C#核心库中是否内置可以为我提供不可变字典的任何内容? 类似于Java的东西: Collections.unmodifiableMap(myMap); 只是为了澄清一下,我并不是要阻止键/值本身被更改,而只是希望字典的结构不会停止更改。如果将IDictionary的任何mutator方法称为(Add, Remove, Clear),我希望它们能够快速响亮。

1
发送消息和发送消息之间有什么区别,它们与C#,WPF和Pure Windows编程有何关系?
在纯Windows编程方面,“发送消息”和“发布消息”之间有何区别?它们与C#,WPF和纯Windows编程有何关系? 我是Threading和其他所有相关知识的新手,所以请原谅我明显的疑问。我需要挖掘Threading的外部因素。.请让我知道帮助我从Win32编程到WPF构筑概念的链接。 我需要理解从Post消息到Afx(调用以启动一个新线程)将Invok / Begin Invoke委托给Dispatcher的过程。
71 c#  wpf  winapi 

9
C#属性和ref参数,为什么不加糖?
我在使用C#时遇到了这个错误消息 属性或索引器可能无法作为out或ref参数传递 我知道是什么原因造成的,并快速创建了正确类型的局部变量,并以out/作为ref参数调用该函数,然后将其分配回属性: RefFn(ref obj.prop); 变成 { var t = obj.prop; RefFn(ref t); obj.prop = t; } 显然,如果该属性在当前上下文中不支持get和set,则此操作将失败。 为什么C#不能为我做到这一点? 我可以想到的地方可能是唯一的情况是: 穿线 例外情况 对于线程而言,这种转换会影响写入发生的时间(在函数调用之后还是在函数调用之后),但是我宁愿怀疑依靠它的任何代码在中断时都不会产生同情。 对于例外情况,关注的是;如果该函数分配给多个ref参数之一而不是throw,会发生什么?任何琐碎的解决方案都会导致在某些参数应该被分配和某些参数不应该被分配时给所有参数分配或不分配参数。同样,我认为不支持使用该语言。 注意:我了解产生此错误消息的机制。我要寻找的是C#不能自动实现琐碎变通办法的理由。

8
在C#中解析SQL代码
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 6年前关闭。 改善这个问题 我想使用C#解析SQL代码。 具体来说,是否有任何免费的解析器可以解析SQL代码并从中生成树或任何其他结构?它还应为嵌套结构生成适当的树。 它还应该返回该树的节点代表哪种语句。 例如,如果节点包含循环条件,则它应返回这是节点的“循环类型”。 还是有什么方法可以解析C#中的代码并生成我想要的类型的树?
71 c#  sql 

5
为什么C#无法从这种看似简单,明显的情况推断出类型
给出以下代码: class C { C() { Test<string>(A); // fine Test((string a) => {}); // fine Test((Action<string>)A); // fine Test(A); // type arguments cannot be inferred from usage! } static void Test<T>(Action<T> a) { } void A(string _) { } } 编译器抱怨Test(A)无法弄清楚T是string。 对我来说,这似乎是一个非常简单的案例,并且我发誓我已经对我编写的其他通用实用程序和扩展函数进行了更为复杂的推断。我在这里想念什么? 更新1:这是在C#4.0编译器中。我在VS2010中发现了这个问题,上面的示例来自我在LINQPad 4中所做的最简单的复制。 更新2:在有效列表中添加了更多示例。
71 c# 

4
如何在Startup.Configure中处理异步操作?
在我的ASP.NET 5应用程序中,我想将Azure中的某些数据加载到Startup.Configure方法中的缓存中。Azure SDK仅公开异步方法。通常,调用异步方法是通过异步方法内部的await完成的,如下所示: public async Task Configure(IApplicationBuilder app, IMemoryCache cache) { Data dataToCache = await DataSource.LoadDataAsync(); cache.Set("somekey", dataToCache); // remainder of Configure method omitted for clarity } 但是,ASP.NET 5要求Configure方法返回void。我可以使用异步无效方法,但是我的理解是异步无效方法仅应用于事件处理程序(如https://msdn.microsoft.com/zh-cn/magazine/jj991977.aspx等) )。 我在想,一种更好的方法是在不等待的情况下调用异步函数,对返回的Task调用Wait,然后通过Task.Results属性缓存结果,如下所示: public void Configure(IApplicationBuilder app, IMemoryCache cache) { Task<Data> loadDataTask = DataSource.LoadDataAsync(); loadDataTask.Wait(); cache.Set("somekey", loadDataTask.Result); // remainder of Configure method …

8
自动创建空的C#事件处理程序
无法在C#中触发没有附加处理程序的事件。因此,在每次调用之前,有必要检查事件是否为null。 if ( MyEvent != null ) { MyEvent( param1, param2 ); } 我想保持我的代码尽可能干净,并摆脱那些空检查。我认为这不会对性能产生太大影响,至少在我看来不会如此。 MyEvent( param1, param2 ); 现在,我通过为每个事件手动添加一个空的内联处理程序来解决此问题。这很容易出错,因为我需要记住要这样做。 void Initialize() { MyEvent += new MyEvent( (p1,p2) => { } ); } 有没有一种方法可以使用反射和一些CLR魔术自动为给定类的所有事件生成空处理程序?
71 c#  events  delegates  clr 


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.