Questions tagged «c#»

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

9
我应该选择哪个加密哈希函数?
.NET框架附带6种不同的哈希算法: MD5:16个字节(散列时间500MB:1462毫秒) SHA-1:20个字节(1644毫秒) SHA256:32个字节(5618毫秒) SHA3​​84:48个字节(3839毫秒) SHA512:64个字节(3820毫秒) RIPEMD:20个字节(7066 ms) 这些功能各自执行不同的功能。MD5是最快的,而RIPEMD是最慢的。 MD5的优点是适合内置的Guid类型。它是类型3 UUID的基础。SHA-1哈希是类型5 UUID的基础。这使得它们真正易于识别。 但是,MD5容易受到碰撞攻击,SHA-1也容易受到攻击,但程度较小。 在什么情况下应该使用哪种哈希算法? 我真的很想知道答案的具体问题是: MD5不值得信赖吗?在正常情况下,当您使用没有恶意意图的MD5算法并且任何第三方都没有恶意意图时,您会期望发生任何冲突(这意味着两个任意byte []会产生相同的哈希) RIPEMD比SHA1好多少?(如果更好),其计算速度要慢5倍,但哈希大小与SHA1相同。 在对文件名(或其他短字符串)进行哈希处理时,获得非恶意冲突的几率是多少?(例如,两个具有相同MD5哈希值的随机文件名)(带有MD5 / SHA1 / SHA2xx)通常,非恶意冲突的几率是多少? 这是我使用的基准: static void TimeAction(string description, int iterations, Action func) { var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); …


5
在.net 4上使用async-await
我目前正在开始创建一个将从C#5的async-await功能中受益匪浅的应用程序。但是我不确定要使用哪个版本的VS和异步运行时。 查看OS流行度图表,我需要再支持Windows XP三年左右。看起来.net 4.5仅在更新版本的Windows上运行,因此我需要定位.net 4.0。开发机器使用Windows 7,因此使用较新版本的VS没问题。 现在,我需要首先选择一个编译器来执行此操作: 带有AsyncCTP的VS2010 VS2012预览版(到达后即为最终版本),将目标设置为.net 4.0 Mono(看起来像2.12具有async-await,我更喜欢/ am习惯于使用VS取代MonoDevelop作为IDE) 哪一个代码错误较少?在Jon Skeet的博客中,VS2012 Preview使用的永远不会是CTP的代码生成器。 更重要的是要使用哪个运行时? VS2012是否包含可与.net 4一起使用的可重新分发的异步运行时? 通过引用AsyncCTP运行时,我设法通过预览来编译代码。但是,由于CTP具有奇怪的许可条件,因此这似乎不是一个好的长期解决方案。 还是应该使用第三方实现?也许单声道有一个? 为了分发库,我更喜欢将dll与应用程序放在同一目录中,而不是某种安装程序。 如果我的二进制文件可以在mono + Linux / MacOS上运行而无需更改,我也很喜欢。因此,运行时应该与内置的mono(可能为2.12)兼容,或者允许在非Windows操作系统上使用。

2
C#中的布尔值的大小是多少?真的需要4个字节吗?
我有两个带有字节和布尔数组的结构: using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, Pack = 4)] struct struct1 { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] values; } [StructLayout(LayoutKind.Sequential, Pack = 4)] struct struct2 { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public bool[] values; } 和以下代码: class main { public static void Main() { Console.WriteLine("sizeof array of bytes: "+Marshal.SizeOf(typeof(struct1))); Console.WriteLine("sizeof array of …
137 c#  interop 

8
使用Json.Net序列化时指定自定义DateTime格式
我正在开发一个API,以使用ASP.NET Web API公开一些数据。 在一种API中,客户希望我们以yyyy-MM-dd格式显示日期。我不想为此更改全局设置(例如GlobalConfiguration.Configuration.Formatters.JsonFormatter),因为它非常特定于此客户端。我确实在针对多个客户的解决方案中进行了开发。 我能想到的解决方案之一是创建一个自定义JsonConverter,然后将其放入需要进行自定义格式设置的属性中 例如 class ReturnObjectA { [JsonConverter(typeof(CustomDateTimeConverter))] public DateTime ReturnDate { get;set;} } 只是想知道是否还有其他简单的方法可以做到这一点。

7
如何使标签在WinForms中居中?
在WinForms我正在使用Label来显示不同的消息,例如成功,失败等。 我想在中心表格中将该标签居中。我想要一个解决方案,使标签中只有一个单词还是整个句子都可以居中。
137 c#  .net  winforms  centering 

9
如何配置web.config以允许任何长度的请求
我正在建立一个站点,在该站点中我想从textarea元素的值创建文件客户端。 我有执行此操作的代码,但出现此错误 HTTP错误404.15-找不到请求过滤模块配置为在查询字符串过长的情况下拒绝请求。 有没有一种方法可以覆盖它,以便我能够处理任何大小的请求? 如果没有,有没有一种方法可以在不使用filesystem / active x对象的情况下生成客户端文件? 谢谢



7
从LINQ查询结果集中填充数据集或数据表
您如何将LINQ查询公开为ASMX Web服务?通常,从业务层,我可以返回一个类型化的DataSet或DataTable可以序列化以通过ASMX传输的类型。 我如何对LINQ查询执行相同操作?有没有一种方法来填充类型化DataSet或DataTable通过LINQ查询? public static MyDataTable CallMySproc() { string conn = "..."; MyDatabaseDataContext db = new MyDatabaseDataContext(conn); MyDataTable dt = new MyDataTable(); // execute a sproc via LINQ var query = from dr in db.MySproc().AsEnumerable select dr; // copy LINQ query resultset into a DataTable -this does not work ! …


8
如何在C#中比较DateTime?
我不希望用户提供回溯日期或时间。 如何比较输入的日期和时间是否少于当前时间? 如果当前日期和时间是2010年6月17日下午12:25,我希望用户不能提供2010年6月17日之前的日期和下午12:25之前的时间。 就像我的函数一样,如果用户输入的时间是2010年6月16日且时间是12:24,则返回false
137 c#  .net  datetime 

8
.Net核心单元测试-模拟IOptions <T>
我觉得我在这里确实缺少一些明显的东西。我有一些类需要使用.Net Core IOptions模式(?)注入选项。当我对该类进行单元测试时,我想模拟各种版本的选项以验证该类的功能。有谁知道如何在Startup类之外正确模拟/实例化/填充IOptions? 以下是我正在使用的类的一些示例: 设置/选项型号 using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace OptionsSample.Models { public class SampleOptions { public string FirstSetting { get; set; } public int SecondSetting { get; set; } } } 使用设置的要测试的类: using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using OptionsSample.Models using System.Net.Http; using …

13
我可以“乘以”一个字符串(在C#中)吗?
假设我有一个字符串,例如 string snip = "&lt;/li&gt;&lt;/ul&gt;"; 我想基本上将它多次写入,具体取决于某个整数值。 string snip = "&lt;/li&gt;&lt;/ul&gt;"; int multiplier = 2; // TODO: magic code to do this // snip * multiplier = "&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;"; 编辑:我知道我可以很容易地编写自己的函数来实现这一点,我只是想知道是否有一些我不知道的奇怪的字符串运算符

6
C#可为空的字符串错误
private string? typeOfContract { get { return (string?)ViewState["typeOfContract"]; } set { ViewState["typeOfContract"] = value; } } 稍后在代码中,我将这样使用它: typeOfContract = Request.QueryString["type"]; 在声明typeOfContract行的声明时出现以下错误: 为了在通用类型或方法“ System.Nullable &lt;T&gt;”中将其用作参数“ T”,类型“字符串”必须为非空值类型 有任何想法吗?基本上,我想确保在执行操作之前该"type"存在QueryString。
136 c#  nullable 

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.