Questions tagged «c#»

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


4
为什么默认情况下所有功能都不应该异步?
.net 4.5 的异步等待模式正在改变范式。真是太好了。 我一直在将一些IO繁重的代码移植到async-await中,因为阻塞已成为过去。 不少人将异步等待与僵尸侵扰进行了比较,我发现它相当准确。异步代码与其他异步代码一样(您需要一个异步函数才能等待一个异步函数)。因此,越来越多的功能变得异步,并且这在您的代码库中不断增长。 将功能更改为异步在某种程度上是重复的并且是没有想象力的工作。async在声明中添加一个关键字,将返回值包装为Task<>,您已经完成了很多工作。整个过程有多么容易,这让人很不安,很快,一个替换文本的脚本将为我自动完成大多数“移植”。 现在是问题了。如果我的所有代码都在缓慢地变为异步状态,为什么不将其全部默认情况下设为异步呢? 我认为明显的原因是性能。异步等待有它的开销,不需要异步的代码,最好不要。但是,如果性能是唯一的问题,那么肯定可以进行一些巧妙的优化,从而在不需要时自动消除开销。我已经阅读了有关“快速路径”优化的信息,在我看来,仅它一项就可以解决大部分问题。 也许这可以与垃圾收集器带来的范式转变相提并论。在早期的GC时代,释放自己的内存肯定更有效。但是,大众仍然选择自动收集,而选择效率更高,更简单的代码,这些代码可能效率较低(甚至可以说不再适用)。也许这里应该是这样吗?为什么所有功能都不应该异步?

10
字符串是否在数组中?
查看a string[]中是否包含元素的最佳方法是什么。这是我的第一枪。但是也许有些事情我忽略了。数组大小不得超过200个元素。 bool isStringInArray(string[] strArray, string key) { for (int i = 0; i <= strArray.Length - 1; i++) if (strArray[i] == key) return true; return false; }
107 c#  arrays  string 


18
对BadImageFormatException进行故障排除
我有一个使用Visual Studio 2010用C#编写的Windows服务,目标是完整的.NET Framework4。从Debug版本运行时,该服务将按预期运行。但是,当我从Release版本运行它时,我得到了System.BadImageFormatException(详细信息如下)。我一直在互联网上寻找解决方案,但到目前为止,我发现的每一件事都没有帮助我找到解决方案。 Windows 7 64位(dev)和Windows XP SP3 32位(目标)系统上都存在此问题。 到目前为止,这是我尝试过的: 经过验证的构建设置(例如Platform Target)都相同(x86)。 使用带有/ verbose选项的peverify来确保程序集二进制文件有效。 使用fuslogvw查找任何加载问题。 使用CheckAsm查找丢失的文件或组件。 所有这些检查都没有改变任何东西。我在下面提供了异常信息的全文,其中一些名称已更改,以保护我的企业主的秘密。 System.BadImageFormatException未处理 消息=无法加载文件或程序集'XxxDevices,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。试图加载格式错误的程序。 来源= XxxDevicesService FileName = XxxDevices,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null FusionLog =程序集管理器从以下位置加载:C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ clr.dll 在可执行文件c:\ Dev …
107 c#  .net  exception 

6
字典中元素的顺序
我的问题是关于枚举Dictionary元素 // Dictionary definition private Dictionary<string, string> _Dictionary = new Dictionary<string, string>(); // add values using add _Dictionary.Add("orange", "1"); _Dictionary.Add("apple", "4"); _Dictionary.Add("cucumber", "6"); // add values using [] _Dictionary["banana"] = 7; _Dictionary["pineapple"] = 7; // Now lets see how elements are returned by IEnumerator foreach (KeyValuePair<string, string> kvp in _Dictionary) …

3
.net 4.5中使用HttpClient努力使Cookie脱颖而出
我有以下代码可以成功运行。我不知道如何从响应中获取cookie。我的目标是我希望能够在请求中设置cookie并从响应中获取cookie。有什么想法吗? private async Task<string> Login(string username, string password) { try { string url = "http://app.agelessemail.com/account/login/"; Uri address = new Uri(url); var postData = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("username", username), new KeyValuePair<string, string>("password ", password) }; HttpContent content = new FormUrlEncodedContent(postData); var cookieJar = new CookieContainer(); var handler = …


2
什么是IP地址':: 1'?
我在没有网络连接的本地计算机上使用套接字。见下文: IPAddress address = IPAddress.Any; // doesn't work IPAddress address = IPAddress.Parse("::1"); // works 那么确切的::1IP地址是什么?是默认的可用IP地址还是回送地址?具有专用IP地址和网络连接的计算机上的上述代码(工作线)会发生什么? 编辑: 确切的代码用于将特定的IP地址绑定到套接字。这里是: ServicePoint sp = ServicePointManager.FindServicePoint(uri); sp.BindIPEndPointDelegate = new BindIPEndPoint(Bind); // here's the bind delegate: private IPEndPoint Bind(ServicePoint sp, IPEndPoint ep, int retryCount) { return new IPEndPoint(IPAddress.Parse("::1"), 0); }
107 c#  ip  system.net 

7
'is'与尝试使用空检查进行转换
我注意到Resharper建议我转一下这个: if (myObj.myProp is MyType) { ... } 到这个: var myObjRef = myObj.myProp as MyType; if (myObjRef != null) { ... } 为什么会建议这种变化?我习惯于Resharper提出优化更改和代码减少更改的建议,但这感觉就像是要接受我的单个语句并将其变成两条线。 根据MSDN: 一个是 表达式的计算结果为真,如果同时满足以下两个条件都满足: 表达式不为null。可以将表达式转换为type。也就是说,表单的强制转换表达式(type)(expression)将完成而不会引发异常。 我is是否只是在一行中误读了该代码,或者不执行完全相同的检查,而无需为空检查显式创建另一个局部变量?
107 c#  .net  casting  resharper 

8
添加字典的不同方式
是什么在差异Dictionary.add(key, value)和Dictionary[key] = value? 我注意到,ArgumentException插入重复密钥时,最新版本不会抛出,但是有什么理由偏爱第一版本吗? 编辑:有人对此有权威的信息来源吗?我尝试过MSDN,但它总是像往常一样追逐:(

20
如何将DataTable导出到Excel
如何DataTable在C#中将a导出到Excel?我正在使用Windows窗体。的DataTable与相关联的DataGridView控制。我必须将的记录导出DataTable到Excel。
107 c#  .net  datatable 

21
截断两位小数而不四舍五入
可以说我有一个3.4679的值并想要3.46,我怎么能截断到两位小数而又不舍入? 我已经尝试了以下方法,但是所有这三个都给了我3.47: void Main() { Console.Write(Math.Round(3.4679, 2,MidpointRounding.ToEven)); Console.Write(Math.Round(3.4679, 2,MidpointRounding.AwayFromZero)); Console.Write(Math.Round(3.4679, 2)); } 这将返回3.46,但看起来有些肮脏: void Main() { Console.Write(Math.Round(3.46799999999 -.005 , 2)); }
107 c#  math  rounding 

19
Swagger UI Web Api文档将枚举形式表示为字符串吗?
有没有一种方法可以将所有枚举显示为字符串形式,而不是int形式? 我希望能够提交POST操作并根据其字符串值放置枚举,而不必每次都查看该枚举。 我试过了,DescribeAllEnumsAsStrings但是服务器然后接收字符串而不是我们想要的枚举值。 有人解决了吗? 编辑: public class Letter { [Required] public string Content {get; set;} [Required] [EnumDataType(typeof(Priority))] public Priority Priority {get; set;} } public class LettersController : ApiController { [HttpPost] public IHttpActionResult SendLetter(Letter letter) { // Validation not passing when using DescribeEnumsAsStrings if (!ModelState.IsValid) return BadRequest("Not valid") .. } // …

12
如何在ASP.NET Core中将多个参数传递给get方法
如何在MVC 6控制器中将多个参数传递给Get方法。例如,我希望能够拥有类似以下内容的东西。 [Route("api/[controller]")] public class PersonController : Controller { public string Get(int id) { } public string Get(string firstName, string lastName) { } public string Get(string firstName, string lastName, string address) { } } 所以我可以查询喜欢。 api/person?id=1 api/person?firstName=john&lastName=doe api/person?firstName=john&lastName=doe&address=streetA

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.