Tag: 循环

c#中最有效的循环是什么

有许多不同的方法可以通过c#中的对象项来完成相同的简单循环。 这让我想知道是否有任何理由表现或使用方便,以至于使用在另一方面。 或者仅仅是个人偏好。 拿一个简单的对象 var myList = List; 让我们假设对象已填充,我们想迭代这些项目。 方法1。 foreach(var item in myList) { //Do stuff } 方法2 myList.Foreach(ml => { //Do stuff }); 方法3 while (myList.MoveNext()) { //Do stuff } 方法4 for (int i = 0; i < myList.Count; i++) { //Do stuff } 我想知道的是,每个编译成同样的东西? 使用一个比其他人有明显的性能优势吗? 或者这只是编码时的个人偏好? 我错过了吗?

使用emgu cv迭代图像的像素

我想迭代图像的所有像素并与搜索模式进行比较。 具有最佳性能并且在C#中。 我找到了emgu cv,它是Intels opencv的包装器。 但我不知道如何正确使用emgu。 有人知道我怎么做吗? 图像的数据属性是什么? 这是imagedata吗? 如果是,哪个值是什么? 谢谢 更新: 我用C#编写了我的函数,但效果很好,但速度太慢了! 我已经在c中使用了algorhytm,我将其翻译成C#。 C#比c慢3到4倍! (我的函数几乎遍历图像的每个像素以寻找图像中的形状。 – > Hugh Transformation) 好吧,我听说不安全的代码可能更快,因为它不检查数组边界和东西。 真的吗? 直接在物理机器上运行不安全的代码? 无论如何,我试图将不安全的代码放入我的函数中。 但我无法获得指向我的3D数组的指针或使用指针访问3D数组。 如何用不安全的代码重写上面的代码? 这会带来额外的性能提升,甚至可以像c代码一样快速运行吗?

单击按钮从循环中断 – C#

我有一个关于循环按钮点击事件的问题,我尝试了很多方法并搜索了许多页面以寻找过去一小时的简单答案,但事实是每个答案看起来都像外星人的代码,可能是因为我还是发展的新手。 这是我正在尝试做的简化版本: private string Message = “Hello”; private void Spam(bool loop) { if(loop == true) { while (loop == true) { MessageBox.Show(Message); } } else { MessageBox.Show(“Spamming has stopped !! “); } } private void button1_Click(object sender, EventArgs e) { Spam(true); } private void button2_Click(object sender, EventArgs e) { Spam(false); } 显然这不是我的API,或者它是一个没用的东西要发明,但是,代码本身很长并且你们总是要求“相关代码”(没有不尊重),所以就是这样。 我的问题:单击按钮2时,打开垃圾邮件循环,我的代码看起来足够让API找出,但每次单击按钮1时,API都会冻结。

用于循环计算阶乘

目前我有这组代码,它的目的是计算阶乘。 int numberInt = int.Parse(factorialNumberTextBox.Text); for (int i = 1; i < numberInt; i++) { numberInt = numberInt * i; } factorialAnswerTextBox.Text = numberInt.ToString(); 由于某种原因,它不起作用,我不知道为什么。 例如,我将输入3并得到答案为-458131456,这看起来很奇怪。 任何帮助赞赏。 谢谢

在C#中的循环中使用lock语句

让我们尝试使用示例类SomeThread,我们试图阻止在Running属性设置为false之后调用DoSomething方法,并且由OtherThread类调用Dispose,因为如果在Dispose方法之后调用它们,则世界将以我们结束为止知道。 由于循环,感觉有可能发生邪恶的事情。 在启动下一个循环并且在调用DoSomething方法之前执行锁定之前,可以将Running更改为false,并在它到达锁之前调用Disposed。 在这种情况下,生活不会很好。 当我在一个简单易于维护的方法中使用循环时,我正在研究如何处理这个问题。 为了记录,我确实考虑过Double Lock Check图案,但它似乎并不适合C#。 警告:这是一个简化的示例,旨在让您轻松关注循环和锁定问题。 如果我没有详细说明某些地方请告诉我,我会尽我所能填写任何细节。 public class SomeThread : IDisposable { private object locker = new object(); private bool running = false; public bool Running { get { lock(locker) { return running; } } set { lock(locker) { running = value; } } } public void Run() { while (Running) […]

c#parallel foreach循环查找索引

我试图读取文本文件中的所有行并计划显示每个行信息。 如何在循环内找到每个项目的索引? string[] lines = File.ReadAllLines(“MyFile.txt”); List list_lines = new List(lines); Parallel.ForEach(list_lines, (line, index) => { Console.WriteLine(index); // Console.WriteLine(list_lines[index]); Console.WriteLine(list_lines[0]); }); Console.ReadLine();

在c#中有效地复制对称矩阵

我想在一个数组中存储一个对称矩阵 对于矩阵我正在这样做 double[,] mat = new double[size,size]; for (int i = 0; i < size; i++) { for (int j = 0; j <= i; j++) mat[i, j] = mat[j, i] = (n * other_matrix[i,j]); } 如果我想存储在一个数组中 double[] mat = new double[size*size]; 代替 double[,] mat 什么是最有效的方式? 使用mat[i*n+j] ?

C#如何循环用户输入,直到输入的数据类型正确?

如何让这段代码循环询问用户输入直到int.TryParse() 成功了吗? //setX public void setX() { //take the input from the user string temp; int temp2; System.Console.WriteLine(“Enter a value for X:”); temp = System.Console.ReadLine(); if (int.TryParse(temp, out temp2)) x = temp2; else System.Console.WriteLine(“You must enter an integer type value”); ‘need to make it ask user for another input if first one was of invalid […]

在foreach循环中更改对象值?

在一个地方,我正在使用字符串列表,在这种情况下,我能够将字符串的值更改为下面给出的代码, foreach(string item in itemlist.ToList()) { item=someValue; //I am able to do this } 但是对于类的对象,我无法改变对象的成员值,代码如下, public class StudentDTO { string name; int rollNo; } studentDTOList=GetDataFromDatabase(); foreach(StudentDTO student in studentDTOList.ToList()) { studentDTO=ChangeName(studentDTO); //Not working } private StudentDTO ChangeName(StudentDTO studentDTO) { studentDTO.name=SomeName; return studentDTO; } 错误是:无法分配,因为它是迭代变量

如何在不声明每个对象的情况下保存所有表单设置?

我有一个包含几个文本框,单选按钮,复选框等的表单。现在我分别通过声明每个文件并保存到程序设置来保存它们的值: Properties.Settings.Default.EmailFrom = txtbxEmailFrom.Text; 我想找到一种循环遍历所有对象并尽可能保存其设置的方法,因此我不必单独声明每个对象。 有没有办法做到这一点? 或者更好的方法来保存我的文本框的文本,复选框和单选按钮的检查状态等?