Questions tagged «c#»

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

4
将WPF ComboBox绑定到自定义列表
我有一个ComboBox,它似乎没有更新SelectedItem / SelectedValue。 ComboBox ItemsSource绑定到ViewModel类上的一个属性,该类将一堆RAS电话簿条目作为CollectionView列出。然后,我(在不同的时间)将ViewModel 的SelectedItem或绑定SelectedValue到了另一个属性。我已经在保存命令中添加了一个MessageBox来调试由数据绑定设置的值,但是未设置SelectedItem/ SelectedValue绑定。 ViewModel类看起来像这样: public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phonebookeEntry; public CollectionView PhonebookEntries { get { return _phonebookEntries; } } public string PhonebookEntry { get { return _phonebookEntry; } set { if (_phonebookEntry == value) return; _phonebookEntry = value; OnPropertyChanged("PhonebookEntry"); } } …
183 c#  wpf  data-binding  mvvm  combobox 

8
是否已添加事件处理程序?
有没有办法判断事件处理程序是否已添加到对象?我正在将对象列表序列化为会话状态或从会话状态中序列化,以便我们可以使用基于SQL的会话状态...当列表中的对象的属性发生更改时,需要对其进行标记,事件处理程序会在此之前对其进行适当的处​​理。但是现在,当对象反序列化时,它没有获取事件处理程序。 为了解决这个问题,我刚刚将事件处理程序添加到访问该对象的Get属性中。现在它被调用了,这很棒,除了它被调用了5次外,所以我认为每次访问该对象时,处理程序都会不断增加。 只需忽略它就足够安全了,但是我宁愿通过检查是否已经添加了处理程序来使它更加整洁,所以我只这样做一次。 那可能吗? 编辑:我不一定完全控制添加了什么事件处理程序,因此仅检查null是不够的。
183 c#  .net  asp.net 

4
如何处理AccessViolationException
我正在从.net应用程序中使用COM对象(MODI)。我正在调用的方法将引发System.AccessViolationException,它会被Visual Studio拦截。奇怪的是,我将调用包裹在一个try捕获中,该捕获具有用于AccessViolationException,COMException和其他所有内容的处理程序,但是当Visual Studio(2010)拦截AccessViolationException时,调试器会中断方法调用(doc.OCR),如果我单步执行,它将继续到下一行而不是进入catch块。此外,如果我在Visual Studio之外运行此程序,则应用程序将崩溃。如何处理在COM对象中引发的异常? MODI.Document doc = new MODI.Document(); try { doc.Create(sFileName); try { doc.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, false, false); sText = doc.Images[0].Layout.Text; } catch (System.AccessViolationException ex) { //MODI seems to get access violations for some reason, but is still able to return the OCR text. sText = doc.Images[0].Layout.Text; } catch (System.Runtime.InteropServices.COMException ex) …
183 c#  .net  exception  com  modi 

4
事件处理程序是否阻止垃圾回收的发生?
如果我有以下代码: MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass = null; pClass会被垃圾回收吗?还是会在事件发生时仍在触发事件呢?我是否需要执行以下操作才能进行垃圾回收? MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass.MyEvent -= MyFunction; pClass = null;

9
在Parallel.ForEach中嵌套等待
在Metro应用程序中,我需要执行许多WCF调用。需要进行大量调用,因此我需要在并行循环中进行调用。问题在于并行循环在WCF调用全部完成之前退出。 您将如何重构它以使其按预期工作? var ids = new List<string>() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" }; var customers = new System.Collections.Concurrent.BlockingCollection<Customer>(); Parallel.ForEach(ids, async i => { ICustomerRepo repo = new CustomerRepo(); var cust = await repo.GetCustomer(i); customers.Add(cust); }); foreach ( var customer in customers ) { Console.WriteLine(customer.ID); …


13
C#vs Java枚举(适用于C#新手)
我已经用Java编程了一段时间,只是被扔到一个完全用C#编写的项目中。我试图加快C#的速度,并注意到在我的新项目中的多个地方都使用了枚举,但是乍一看,C#的枚举似乎比Java 1.5+实现更简单。谁能列举C#和Java枚举之间的差异,以及如何克服这些差异?(我不想发动语言大战,我只是想知道如何用Java来做C#中的某些事情)。例如,有人可以在Sun著名的Planet枚举示例中发布C#副本吗? public enum Planet { MERCURY (3.303e+23, 2.4397e6), VENUS (4.869e+24, 6.0518e6), EARTH (5.976e+24, 6.37814e6), MARS (6.421e+23, 3.3972e6), JUPITER (1.9e+27, 7.1492e7), SATURN (5.688e+26, 6.0268e7), URANUS (8.686e+25, 2.5559e7), NEPTUNE (1.024e+26, 2.4746e7), PLUTO (1.27e+22, 1.137e6); private final double mass; // in kilograms private final double radius; // in meters Planet(double mass, double …

5
无法在Visual Studio中键入
我无法在Visual Studio 2013中编辑项目中的任何文件。它仅在一个项目中发生。如果打开其他项目,则可以正常输入,但是一旦回到问题项目,则无法在编辑器窗口中输入。不确定是否重要,但是给我的项目出现了问题,我们正在使用SVN。其他项目只是计算机上的本地项目。我已经重新启动了Visual Stuido,重新启动了计算机,但仍然无法编辑文件。有任何想法吗?


5
静态类实例对于ASP.NET中的请求或服务器是否唯一?
在ASP.NET网站上,静态类是每个Web请求唯一的,还是在需要时实例化它们,并在GC决定处置它们时将它们GC化? 我问的原因是因为我之前在C#中编写了一些静态类,并且行为与我预期的不同。我希望静态类对于每个请求都是唯一的,但是事实并非如此。 如果它们不是每个请求唯一的,是否有办法允许它们存在? 更新: 德里斯给我的答案正是我所需要的。我已经在使用一个singleton类,但是它使用的是静态实例,因此即使用户不同,也可以在请求之间共享它,在这种情况下,这是一件坏事。使用HttpContext.Current.Items完美解决了我的问题。对于以后偶然遇到此问题的任何人,以下是我的实现(简化和缩短),以便于理解该模式: using System.Collections; using System.Web; public class GloballyAccessibleClass { private GloballyAccessibleClass() { } public static GloballyAccessibleClass Instance { get { IDictionary items = HttpContext.Current.Items; if(!items.Contains("TheInstance")) { items["TheInstance"] = new GloballyAccessibleClass(); } return items["TheInstance"] as GloballyAccessibleClass; } } }
182 c#  asp.net  static 

18
如何在WPF中将枚举绑定到组合框控件?
我试图找到一个简单的示例,其中枚举按原样显示。我见过的所有示例都试图添加外观漂亮的显示字符串,但我不希望这种复杂性。 基本上,我有一个类来保存我绑定的所有属性,方法是首先将DataContext设置为此类,然后在xaml文件中指定如下所示的绑定: <ComboBox ItemsSource="{Binding Path=EffectStyle}"/> 但这不会在ComboBoxas项目中显示枚举值。
182 c#  .net  wpf  xaml  data-binding 

2
如何验证Windows服务是否正在运行
我有一个C#应用程序(在嵌入式XP上运行2.0),该应用程序与作为Windows服务实现的“看门狗”进行通信。设备启动时,此服务通常需要一些时间才能启动。我想根据我的代码检查服务是否正在运行。我该怎么做?

6
将列表序列化为JSON
我有一个看起来像这样的对象模型: public MyObjectInJson { public long ObjectID {get;set;} public string ObjectInJson {get;set;} } 该属性ObjectInJson是一个已序列化的版本,其中包含嵌套列表的对象。目前,我正在MyObjectInJson像这样手动序列化列表: StringBuilder TheListBuilder = new StringBuilder(); TheListBuilder.Append("["); int TheCounter = 0; foreach (MyObjectInJson TheObject in TheList) { TheCounter++; TheListBuilder.Append(TheObject.ObjectInJson); if (TheCounter != TheList.Count()) { TheListBuilder.Append(","); } } TheListBuilder.Append("]"); return TheListBuilder.ToString(); 我想知道是否可以用这种危险代码替换JavascriptSerializer并获得相同的结果。我该怎么做? 谢谢。
182 c#  asp.net  json 

7
如何使用IValidatableObject?
我了解这IValidatableObject是用来验证对象的一种方式,它可以让人们相互比较属性。 我仍然希望有一些属性来验证各个属性,但是在某些情况下,我想忽略某些属性上的失败。 在以下情况下,我是否尝试使用不正确?如果没有,我该如何实施? public class ValidateMe : IValidatableObject { [Required] public bool Enable { get; set; } [Range(1, 5)] public int Prop1 { get; set; } [Range(1, 5)] public int Prop2 { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (!this.Enable) { /* Return valid result here. * I …


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.