Tag: C#的

在构build使用数据的XmlReader或XPathDocument之前,如何从基于XML的数据源中删除无效的hex字符?

在XmlReader中使用基于XML的数据源之前,是否有任何简单的/通用的方法来清理这些数据源,以便我可以优雅地使用与XML上的hex字符限制不一致的XML数据? 注意: 解决scheme需要处理使用除UTF-8以外的字符编码的XML数据源,例如通过在XML文档声明中指定字符编码。 在去除无效的hex字符的同时,不要修改源的字符编码一直是主要的问题。 删除无效的hex字符应该只能删除hex编码值,因为您经常可以在数据中发现包含string的href值,该string可能是hex字符的string匹配。 背景: 我需要使用符合特定格式(基于Atom或RSS提要)的基于XML的数据源,但希望能够使用已发布的数据源,其中包含每个XML规范中无效的hex字符。 在.NET中,如果您有一个表示XML数据源的Stream,然后尝试使用XmlReader和/或XPathDocument进行parsing,则会由于在XML数据中包含无效的hex字符而引发exception。 我目前的尝试解决这个问题是parsingstream作为一个string,并使用正则expression式来删除和/或replace无效的hex字符,但我正在寻找一个更高性能的解决scheme。

在C#中使用yield return iterators的目的/优点是什么?

我见过的所有使用yield return x;的例子都yield return x; 在一个C#方法内可以通过返回整个列表以相同的方式完成。 在这些情况下,使用yield return语句与返回列表是否有什么好处? 另外,在什么types的情况下会yield return ,你不能只返回完整的列表?

如何解决运算符'!='不能应用于'T'和'T'types的操作数

这个代码片段按照预期的inttypes工作: public class Test { public int Value { get { return _Value; } set { if (_Value != value) { _Value = value; } } } private int _Value; } 当int被genericsTreplace时,编译器会抱怨: 运算符'!='不能应用于'T'和'T'types的操作数 为什么会发生这种情况,是否有办法解决这个问题?

如何获得等待Thread.Sleep?

我正在写一个基于await / sleep范例的networking绑定应用程序。 有时会发生连接错误,根据我的经验,等待一段时间,然后再次重试操作是值得的。 问题是,如果在await / async中使用Thread.Sleep或类似的阻塞操作,它会阻塞调用者线程中的所有活动。 我应该用什么来取代Thread.Sleep(10000)来达到同样的效果 await Thread.SleepAsync(10000) ? UPDATE 我更喜欢这样做的答案,而不创build任何额外的线程

可开发的C#函数

这个问题类似于可开发的PHP函数 。 受感染的数据来自用户,或者更具体地说是攻击者。 当受污染的variables达到吸收function,那么你有一个漏洞。 例如,一个执行sql查询的函数是一个接收器,GET / POSTvariables是污点的来源。 C#中所有的接收器函数是什么? 我正在寻找引入漏洞或软件缺陷的function 。 我特别感兴趣的是远程执行代码漏洞。 是否有整个类/库包含黑客想要影响的function上的讨厌? 人们如何不小心做出危险的C#代码?

c#:getter / setter

我在某个地方看到类似的东西,想知道这是什么意思。 我知道他们是getter和setter,但是想知道为什么stringType是这样定义的。 谢谢你帮助我 public string Type { get; set; }

用reflection“铸造”

考虑下面的示例代码: class SampleClass { public long SomeProperty { get; set; } } public void SetValue(SampleClass instance, decimal value) { // value is of type decimal, but is in reality a natural number => cast instance.SomeProperty = (long)value; } 现在我需要通过反思做类似的事情: void SetValue(PropertyInfo info, object instance, object value) { // throws System.ArgumentException: Decimal can not be converted […]

C#真的比说C ++慢吗?

我一直在想这个问题一段时间了。 当然,C#中的某些东西并没有针对速度进行优化,所以使用这些对象或者语言调整(比如LinQ)可能会导致代码变慢。 但是,如果你不使用任何这些调整,只是比较C#和C ++中的相同的代码片段(很容易翻译到另一个)。 这真的会慢很多吗? 我看过一些比较表明C#在某些情况下可能会更快,因为理论上JIT编译器应该实时优化代码并获得更好的结果: 托pipe还是非托pipe? 我们应该记住,JIT编译器会实时编译代码,但是这是一次性开销,相同的代码(一旦到达和编译)不需要在运行时再次编译。 GC不会增加大量的开销,除非您创build并销毁数千个对象(如使用String而不是StringBuilder)。 而在C ++中这样做也将是昂贵的。 我想提出的另一点是在.Net中引入的DLL之间更好的通信。 .Net平台的通信要比托pipe的基于COM的DLL好得多。 我没有看到为什么语言应该慢一些的固有原因,我真的不认为C#比C ++慢(从经验和缺乏一个很好的解释)。 那么,用C#编写的相同代码会比C ++中的相同代码慢吗? 如果是的话,为什么? 其他的一些参考资料(其中有一点谈到,但没有解释为什么): 为什么你要使用C#,如果它比C ++慢?

如何从std :: vector <char>构造一个std :: string?

(明显的)build立一个C风格的string,然后用它来创build一个std ::string,有一个更快/替代/“更好”的方式来初始化一个string从一个字符的向量?

将文件拖放到WPF中

我需要将一个图像文件放入我的WPF应用程序中。 当我放入文件时,我现在有一个事件触发,但我不知道下一步该怎么做。 我如何获得图像? sender对象的图像还是控件? private void ImagePanel_Drop(object sender, DragEventArgs e) { //what next, dont know how to get the image object, can I get the file path here? }