Questions tagged «c#»

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

4
在Vista上,Environment.GetFolderPath(…CommonApplicationData)仍返回“ C:\ Documents and Settings \”
据我了解,您应该使用该Environment.GetFolderPath方法,以便拥有独立于操作系统的代码... Windows XP使用C:\Documents and Settings\。Windows Vista使用C:\ProgramData和C:\Users。 我在Windows Vista计算机上使用下面的代码,它返回的是C:\Documents and Settings\目录,而不是C:\ProgramData应有的目录。 string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); try { File.CreateText( Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\mycompany\\uid"); log.Debug("Created file successfully"); } catch (Exception ex) { log.Error("Unable to create the uid file: ", ex); }
84 c#  .net 


3
做短路操作员|| 和&&是否存在可为空的布尔值?RuntimeBinder有时会这样认为
我阅读了有关条件逻辑运算符 ||和的C#语言规范&&,也称为短路逻辑运算符。对我来说,似乎还不清楚这些是否存在可空布尔值,即操作数类型Nullable<bool>(也写为bool?),因此我尝试使用非动态类型: bool a = true; bool? b = null; bool? xxxx = b || a; // compile-time error, || can't be applied to these types 这似乎解决了这个问题(我无法清楚地理解规范,但是现在我知道,假设Visual C#编译器的实现是正确的)。 但是,我也想尝试dynamic绑定。所以我尝试这样做: static class Program { static dynamic A { get { Console.WriteLine("'A' evaluated"); return true; } } static dynamic B { get …


8
为什么运算符比方法调用慢得多?(仅在较旧的JIT上结构较慢)
简介: 我用C#编写高性能的代码。是的,我知道C ++可以为我提供更好的优化,但是我仍然选择使用C#。我不想辩论这种选择。相反,我想听听那些像我一样试图在.NET Framework上编写高性能代码的人。 问题: 为什么下面代码中的运算符比等效方法调用慢? 为什么在下面的代码中传递两个双精度值的方法比在内部传递两个双精度值的结构的等效方法更快?(A:较旧的JIT对结构的优化效果很差) 是否有办法让.NET JIT编译器将简单结构与结构成员一样有效?(A:获取更新的JIT) 我想知道的是: 原始的.NET JIT编译器不会内联任何涉及结构的内容。给定的奇异结构仅应在需要小值类型(如内置)进行优化但适用的情况下使用。幸运的是,在.NET 3.5SP1和.NET 2.0SP2中,他们对JIT Optimizer进行了一些改进,包括对内联的改进,尤其是对结构的改进。(我猜他们是这样做的,因为否则,他们引入的新Complex结构会表现得很糟糕……因此Complex团队可能正在对JIT Optimizer团队加紧努力。)因此,.NET 3.5 SP1之前的任何文档都可能与这个问题不太相关。 我的测试显示: 通过检查C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ mscorwks.dll文件确实具有版本> = 3053,我已验证自己具有更新的JIT Optimizer,因此应该进行这些改进到JIT优化器。但是,尽管如此,我的时间安排和对拆卸的观察都显示了: JIT生成的用于传递具有两个双精度的结构的代码的效率远远低于直接传递两个双精度的代码的效率。 JIT生成的用于struct方法的代码比通过struct作为参数传递“ this”的效率要高得多。 如果传递两个双精度值而不是传递具有两个双精度值的结构,即使使用乘数(由于明显处于循环状态),JIT仍会更好地内联。 时间: 实际上,看一下反汇编,我意识到循环中的大多数时间只是从列表中访问测试数据。如果不考虑循环和数据访问的开销代码,则进行相同调用的四种方式之间的差异将大大不同。对于PlusEqual(double,double)而不是PlusEqual(Element),我得到5倍到20倍的提速。10倍到40倍用于执行PlusEqual(double,double)而不是运算符+ =。哇。伤心。 这是一组时间: Populating List<Element> took 320ms. The PlusEqual() method took 105ms. The …


6
在C#中使用SHA1算法进行哈希处理
我想byte[]通过使用SHA1算法对给定数组进行哈希处理SHA1Managed。 该byte[]散列将来自单元测试。 预期的哈希是0d71ee4472658cd5874c5578410a9d8611fc9aef(区分大小写的)。 我该如何实现? public string Hash(byte [] temp) { using (SHA1Managed sha1 = new SHA1Managed()) { } }
84 c#  hash  byte  sha1  hashcode 


5
为什么有人在C#中使用“输入”参数修饰符?
因此,我(认为我)了解in参数修饰符的作用。但是它的作用似乎是多余的。 通常,我认为使用a的唯一原因ref是修改调用变量,明确禁止使用in。因此,按in引用传递在逻辑上似乎等效于按值传递。 有某种性能优势吗?我认为,在事物的后端,ref参数必须至少复制变量的物理地址,该地址的大小应与任何典型对象引用的大小相同。 因此,那么优势是仅在较大的结构中出现,还是在后台进行了一些编译器优化,使其在其他地方有吸引力?如果是后者,为什么我不应该将每个参数都设为in?
84 c#  c#-7.2 

30
您发现扩展方法的哪些优势?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案能得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 C#的“非信奉者”在问我扩展方法的目的是什么。我解释说,然后您可以向已定义的对象添加新方法,尤其是当您不拥有/控制原始对象的源时。 他提出了“为什么不只是向自己的班级添加方法呢?” 我们一直在(很好的方式)走来走去。我的一般回答是它是工具带中的另一个工具,而他的回答是这是对工具的无用浪费……但是我认为我会得到一个更“开明”的答案。 在哪些情况下使用了扩展方法而又没有(或不应该)使用扩展方法添加到自己的类中?

14
X509Store证书存在问题。查找FindByThumbprint
使用该方法时出现问题 X509Store.Certificates.Find public static X509Certificate2 FromStore(StoreName storeName, StoreLocation storeLocation, X509FindType findType, string findValue) { X509Store store = new X509Store(storeName, storeLocation); store.Open(OpenFlags.ReadOnly); try { //findValue = "7a6fa503ab57b81d6318a51ca265e739a51ce660" var results = store.Certificates.Find(findType, findValue, true); return results[0]; } finally { store.Close(); } } 在这种情况下,Find方法返回0个结果(results.Count == 0),但是如果我将findValue设置为常量,则该方法将找到证书。 public static X509Certificate2 FromStore(StoreName storeName, StoreLocation storeLocation, …




3
如何将JToken添加到JObject?
我正在尝试使用JSON.Net将一些文本中的JSON对象添加到现有JSON文件中。例如,如果我具有以下JSON数据: { "food": { "fruit": { "apple": { "colour": "red", "size": "small" }, "orange": { "colour": "orange", "size": "large" } } } } 我一直在尝试这样做: var foodJsonObj = JObject.Parse(jsonText); var bananaJson = JObject.Parse(@"{ ""banana"" : { ""colour"": ""yellow"", ""size"": ""medium""}}"); var bananaToken = bananaJson as JToken; foodJsonObj["food"]["fruit"]["orange"].AddAfterSelf(bananaToken); 但这给出了错误: "Newtonsoft.Json.Linq.JProperty cannot have …
84 c#  json.net 

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.