Questions tagged «c#»

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

17
使用DateTime.ToString()时获取日后缀
使用DateTime.ToString()格式化日期时,是否可以包含日期后缀? 例如,我想以以下格式打印日期-2009年7月27日星期一。但是,使用DateTime.ToString()找到的最接近的示例是2009年7月27日星期一。 我可以使用DateTime.ToString()进行此操作,还是必须退回到我自己的代码?
78 c#  .net  date 

11
如何禁用Alt + F4关闭表格?
停用Alt+的最佳方法是什么F4在ac#win表单中以防止用户关闭表单? 我正在使用窗体作为弹出对话框来显示进度条,但我不希望用户能够将其关闭。
78 c#  .net  winforms 


2
OpenSubKey()对于regedit.exe中可以看到的注册表项返回null
我正在尝试获取此键内所有子键的显示名称: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 使用此代码: RegistryKey newKey; string val; string KeyPath64Bit = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; RegistryKey mainKey = Registry.LocalMachine.OpenSubKey(KeyPath64Bit); string[] RegKeys64Bits = Registry.LocalMachine.OpenSubKey(KeyPath64Bit).GetSubKeyNames(); foreach (string s in RegKeys64Bits) { newKey = mainKey.OpenSubKey(s); val = newKey.GetValue("DisplayName", -1, RegistryValueOptions.None).ToString(); if (val != "-1") file64.WriteLine(val); } 运行代码后,找不到所需的键之一: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E} 它应该具有显示名称:Microsoft Visual C ++ 2010 x64 Redistributable-10.0.30319,但是该GetSubKeyNames()方法为我提供了sub key:{DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}.KB2151757它没有任何显示名称。 为什么我无法获得所需的确切子键({DA5E371C-6333-3D8A-93A4-6FD5B20BCC6E}),又如何获得呢?
78 c#  registry 

8
如何实现只读属性
我需要在我的类型上实现一个只读属性。此外,此属性的值将在构造函数中设置,并且不会被更改(我正在编写一个类,该类公开用于WPF的自定义路由UI命令,但这无关紧要)。 我看到两种方法: class MyClass { public readonly object MyProperty = new object(); } class MyClass { private readonly object my_property = new object(); public object MyProperty { get { return my_property; } } } 由于所有这些FxCop错误都表明我不应该拥有公共成员变量,因此第二个似乎是正确的方法。正确? 在这种情况下,“仅获取”属性和“只读”成员之间有什么区别吗? 我将不胜感激任何意见/建议/等。

6
我应该使用ThreadPools还是Task Parallel Library进行IO绑定操作
在我的一个有点像聚合器的项目中,我从网络上解析提要,播客等。 如果我使用顺序方法,那么考虑到大量的资源,要花所有的时间来处理所有这些资源(由于网络问题和类似的东西); foreach(feed in feeds) { read_from_web(feed) parse(feed) } 因此,我想实现并发性,无法决定是否应该基本上使用ThreadPools处理工作线程,还是仅依靠TPL对其进行排序。 ThreadPools肯定会通过辅助线程为我完成工作,并且我会得到期望的结果(在多核CPU环境中,其他内核也将被利用)。 但是我仍然想考虑TPL,因为它是推荐方法,但我对此有些担心。首先,我知道TPL使用ThreadPools,但增加了决策层。我最担心的是存在单核环境的情况。如果我没记错的话,TPL开头的工作线程数等于可用的CPU核心数。我确实担心TPL对于受IO约束的案例会产生与顺序方法相似的结果。 因此,对于IO绑定操作(以我为例,它是从Web上读取资源),最好是使用ThreadPools来控制事物,还是最好仅依赖TPL?TPL也可以用于IO绑定方案吗? 更新:我主要担心的是-在单核CPU环境中,TPL会像顺序方法一样工作还是会提供并发性?我已经在阅读《使用Microsoft .NET进行并行编程》,因此这本书却找不到确切的答案。 注意:这是我以前的问题的重新措辞[可以同时使用线程并发和并行性吗?]这句话是错误的。

13
覆盖获取,但未设置
我有一个抽象类,它定义了一个get,但没有定义set,因为就该抽象类而言,它仅需要一个get。 public abstract BaseClass { public abstract double MyPop {get;} } 但是,在某些派生类中,我需要一个set属性,因此我正在研究此实现。 public class DClass: BaseClass { public override double MyPop {get;set;} } 问题是,我收到一个编译错误,说 * .set:无法覆盖,因为*。没有可覆盖的set访问器。 即使我认为上述语法完全合法。 有什么想法吗?解决方法,或者为什么会这样? 编辑:我能想到的唯一方法是将get和都放在set抽象类中,然后让子类引发NotImplementedExceptionifset调用,这是不必要的。我不喜欢这种东西,还有一种特殊的设置方法。
78 c# 

7
如何从Web服务打印HTML文档?
我想从C#Web服务打印HTML。Web浏览器控件过大,在服务环境中无法正常运行,在安全性非常严格的系统上也无法正常运行。是否有某种免费的.NET库可以支持基本HTML页面的打印?这是我到目前为止的代码,无法正常运行。 public void PrintThing(string document) { if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA) { Thread thread = new Thread((ThreadStart) delegate { PrintDocument(document); }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); } else { PrintDocument(document); } } protected void PrintDocument(string document) { WebBrowser browser = new WebBrowser(); browser.DocumentText = document; while (browser.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); } browser.Print(); } …



8
如何使用多个条件过滤Directory.EnumerateFiles?
我有以下代码: List<string> result = new List<string>(); foreach (string file in Directory.EnumerateFiles(path,"*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".wma"))) { result.Add(file); } 它工作正常,可以满足我的需求。除了一件小事。我想找到一种更好的方法来过滤多个扩展。我想使用带有这样的过滤器的字符串数组: string[] extensions = { "*.mp3", "*.wma", "*.mp4", "*.wav" }; 使用NET Framework 4.0 / LINQ进行此操作的最有效方法是什么?有什么建议么? 我非常感谢偶尔的程序员提供的帮助:-)
78 c#  .net 

6
从C#中的接口继承XML注释
我想知道是否有人知道如何将接口xml注释链接到实现。问题是我希望基本注释首先来自我的界面。例: interface myinterface { /// <summary> /// Does something. /// </summary> void method1(string foo); } 然后实现是: public class myclass : myinterface { public void method1(string foo) { //do something... } } 所以现在,如果我在实例化对象后用鼠标悬停在该方法上: myclass foo = new myclass(); foo.method1("do something"); 如何使注释出现在悬停弹出窗口中?有什么方法可以将接口注释链接到实现?我知道Java中有一种方法,但是找不到C#的解决方案。 谢谢

12
SQL网络接口,错误:50-发生本地数据库运行时错误。无法创建自动实例
我正在尝试构建一个ASP.NET MVC 5 Web应用程序,该MyDatabase.mdf文件在App_Data文件夹中。我有一个LocalDb实例安装的SQL Server 2014 Express 。我可以使用服务器资源管理器来编辑数据库表,但是当我调试应用程序并转到需要数据库的页面时,出现以下错误。 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称正确,并且已将SQL Server配置为允许远程连接。(提供者:SQL网络接口,错误:50-发生本地数据库运行时错误。无法创建自动实例。有关错误详细信息,请参阅Windows应用程序事件日志。 因此,我查看了下面的“事件查看器” Application,一次又一次地看到一个警告。 指定用于缓存压缩内容的目录C:\ Users \ User1 \ AppData \ Local \ Temp \ iisexpress \ IIS临时压缩文件\ Clr4IntegratedAppPool无效。静态压缩被禁用。 因此,我尝试重新启动服务器,但仍然无法进行。与以前相同的错误50。 我在Models名为的课程下创建了一个课程Post。 namespace MyApplication.Models { public class Post { public int Id { get; set; } public string Title { get; set; …
78 c#  asp.net  sql-server 

9
如何设置TcpClient的超时时间?
我有一个TcpClient,用于将数据发送到远程计算机上的侦听器。远程计算机有时会打开,有时会关闭。因此,TcpClient将经常无法连接。我希望TcpClient一秒钟后超时,因此当它无法连接到远程计算机时不需要花费很多时间。当前,我将以下代码用于TcpClient: try { TcpClient client = new TcpClient("remotehost", this.Port); client.SendTimeout = 1000; Byte[] data = System.Text.Encoding.Unicode.GetBytes(this.Message); NetworkStream stream = client.GetStream(); stream.Write(data, 0, data.Length); data = new Byte[512]; Int32 bytes = stream.Read(data, 0, data.Length); this.Response = System.Text.Encoding.Unicode.GetString(data, 0, bytes); stream.Close(); client.Close(); FireSentEvent(); //Notifies of success } catch (Exception ex) { FireFailedEvent(ex); …


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.