Tag: .net

如何制作数组的深层副本?

我将二维数组作为属性传递给我的用户控件。 在那里我将这些值存储在另一个二维数组中: int[,] originalValues = this.Metrics; 后来我改变了this.Metrics值。 但是现在如果我从originalValues中检索值,我会从this.Metrics获取更改的值。 如何制作深层副本而不只是复制C#中的引用?

如何在winforms中制作多语言应用程序

我有一个应用程序,我需要在该应用程序中使用两种语言(例如,英语和阿拉伯语),但我不知道我该怎么做。 有人可以帮我这个吗? 我需要在C#Windows窗体中使用一些示例。

表单之间的交互 ​​- 如何从另一个表单更改表单的控件?

当我在第一个表单上的dataGridView中选择行以在另一个表单上用该值填充comboBox时,我想设置comboBox.SelectedValue, 在我的加载事件中的第二个表单上,我有comboBox.DataSource , DisplayMember , ValueMember正确设置但是当我首先设置selectedValue时没有发生任何事情。 当我在一个表格上做的时候,一切都很好

编译时和运行时转换c#

我想知道为什么在编译时检查C#中的某些转换,而在其他情况下,责任转储到CLR上。 如上所述都是不正确的,但以不同的方式处理。 class Base { } class Derived : Base { } class Other { } static void Main(string[] args) { Derived d = (Derived)new Base(); //Runtime InvalidCastException Derived d = (Derived)new Other(); //Compile-time Cannot convert type… } 在阅读“C#深度”时,我发现了有关此主题的信息,其中autor说: “如果编译器发现该转换实际上不可能工作,它将触发编译错误 – 如果理论上允许但在执行时实际上不正确,则CLR将抛出exception。” “理论上”是否意味着通过inheritance层次结构(对象之间的另一个亲和力?)连接,还是编译器的内部业务?

.NET 4.0和可怕的OnUserPreferenceChanged Hang

我一直受到可怕的OnUserPreferenceChanged Hang的困扰,Ivan Krivyakov在这里很好地提到了这里: http://ikriv.com/en/prog/info/dotnet/MysteriousHang.html#BeginInvokeDance 我刚回来时发布了一个问题,当时我最初遇到问题: 又一个C#死锁调试问题 我以为我已经通过移除一个由UI线程构建的Control来解决它,但过了一会儿它再次出现(可能永远不会离开……)。 我们一直在使用.NET 3.5,据我所知使用的是CLR 2.0。 最近,applciation已升级为使用.NET 4.0 Client Profile / CLR 4.0。 此外,我们已从Infragistics WinForms 10.1升级到10.3。 唯一的另一个区别是以前的版本是混淆的……有没有人遇到过混淆和挂起的问题? 我已经再次尝试摆脱任何应用程序挂起一次又一次,但不同寻常的是,我无法在最新版本中重现挂起(使用.NET 4.0)。 使用Ivan Krivyakov的方便的Freezer应用程序(请参阅他的文章),可以根据请求触发WM_SETTINGCHANGE消息,以便在以前的版本(使用.NET 3.5)中重现。 可能是我有点希望问题已经从它自己的消失中消失了,但是有人知道CLR从2.0到4.0是否有任何变化会导致这种情况发生? ————————————————– – -解 – – – – – – – – – – – – – – – – – – – – – – – —- 因此,在测试应用程序的变体后,例如CLR […]

如何使用Json.Net序列化/反序列化具有其他属性的自定义集合

我有一个自定义集合(实现IList),它有一些自定义属性,如下所示: class FooCollection : IList { private List _foos = new List(); public string Bar { get; set; } //Implement IList, ICollection and IEnumerable members… } 当我序列化时,我使用以下代码: JsonSerializerSettings jss = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Auto }; string serializedCollection = JsonConvert.SerializeObject( value , jss ); 它正确地序列化和反序列化所有收集项目; 但是,不考虑FooCollection类中的任何额外属性。 无论如何将它们包含在序列化中?

LINQ扩展方法的顺序不影响性能?

我很惊讶,无论我是在前置还是附加LINQ扩展方法都没关系。 使用Enumerable.FirstOrDefault测试: hugeList.Where(x => x.Text.Contains(“10000”)).FirstOrDefault(); hugeList.FirstOrDefault(x => x.Text.Contains(“10000”)); var hugeList = Enumerable.Range(1, 50000000) .Select(i => new { ID = i, Text = “Item” + i }); var sw1 = new System.Diagnostics.Stopwatch(); var sw2 = new System.Diagnostics.Stopwatch(); sw1.Start(); for(int i=0;i x.Text.Contains(“10000”)).FirstOrDefault(); sw1.Stop(); sw2.Start(); for(int i=0;i x.Text.Contains(“10000”)); sw2.Stop(); var result1 = String.Format(“FirstOrDefault after: {0} FirstOrDefault before: {1}”, […]

逐行阅读word文档

我正在尝试使用C#阅读word文档。 我能够获得所有文本但我希望能够逐行读取并存储在列表中并绑定到gridview 。 目前,我的代码只返回一个包含所有文本的项目列表(不是根据需要逐行)。 我正在使用Microsoft.Office.Interop.Word库来读取该文件。 以下是我的代码: Application word = new Application(); Document doc = new Document(); object fileName = path; // Define an object to pass to the API for missing parameters object missing = System.Type.Missing; doc = word.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref […]

ProcessInfo和RedirectStandardOutput

我有一个应用程序在命令窗口中调用另一个进程,该进程已更新输出到控制台窗口的统计信息。 我认为这是一个相当简单的操作,但我似乎无法让它工作。 我错过了什么吗? string assemblyLocation = Assembly.GetExecutingAssembly().Location; Process process = new Process { ProcessStart = { RedirectStandardOutput = true, UseShellExecute = false, WindowStyle = ProcessWindowStyle.Hidden, Arguments = arg, FileName = assemblyLocation.Substring(0, assemblyLocation.LastIndexOf(“\\”)) + “\\ffmpeg.exe”, CreateNoWindow = true } }; process.Start(); Console.WriteLine(process.StandardOutput.ReadToEnd()); process.WaitForExit(); 理想情况下,我想要的是输出在我触及的过程中发生变化,或者数据进入读者,我从中得到了事件。 任何帮助都会很棒,我觉得这是一个新手问题,但似乎缺少一些东西。

处理,何时被称为?

请考虑以下代码: namespace DisposeTest { using System; class Program { static void Main(string[] args) { Console.WriteLine(“Calling Test”); Test(); Console.WriteLine(“Call to Test done”); } static void Test() { DisposeImplementation di = new DisposeImplementation(); } } internal class DisposeImplementation : IDisposable { ~DisposeImplementation() { Console.WriteLine(“~ in DisposeImplementation instance called”); } public void Dispose() { Console.WriteLine(“Dispose in DisposeImplementation instance […]