【c# – 为什么我的foreach中的代码无法访问? (已经过单元测试的工作代码的确切副本)】教程文章相关的互联网学习教程文章

c# – foreach中的三元运算符【代码】

我目前正在努力解决大约5个嵌套的if语句,并且看起来很困难. 因此,我考虑添加三元运算符而不是ifs进行简单检查,请参阅foreach (String control in controls) {if (!control.Equals(String.Empty)){// Do some stuffforeach (Int32 someStuff in moreStuff){if (!someStuff.Equals(0)){// More stuff with more if equals}}}那就是现在的样子.多数民众赞成我的想法,如何使它看起来更好一点:foreach (String control in controls) {(...

c# – Typecasting和foreach【代码】

我很好奇这个程序是否可以以更加优雅和清洁的方式取得成功?foreach (MediaTitle item in mediaTitleCollection){if (item is FilmMedia){FilmMedia tempItem = (FilmMedia) item;sum += tempItem.Playtime;}}提前致谢.解决方法: var sum = mediaTitleCollection.OfType<FilmMedia>().Sum(x => x.Playtime);

c# – 如何在Foreach循环中更新IList中的记录?【代码】

我的控制器正在通过一个列表,然后我需要循环并更新数据库中列表中的每个记录.我正在使用ASP.NET MVC和使用Linq to Sql的存储库模式.下面的代码是我的save方法,它需要将记录添加到发票表中,然后从db更新作业表中的适用作业.public void SaveInvoice(Invoice invoice, IList<InvoiceJob> invoiceJobs) {invoiceTable.InsertOnSubmit(invoice);invoiceTable.Context.SubmitChanges();foreach (InvoiceJob j in invoiceJobs){var jobU...

c# – 如何使用for each或foreach迭代IEnumerable集合?【代码】

我想逐个添加值但在for循环中如何迭代通过逐个值并将其添加到字典中.IEnumerable<Customer> items = new Customer[] { new Customer { Name = "test1", Id = 111}, new Customer { Name = "test2", Id = 222} };我想在i = 0时添加{Name =“test1”,Id = 111}并且当i = 1 n时,想要添加{Name =“test2”,Id = 222}. 现在我正在每个键中添加完整的集合.(希望使用foreach或forloop实现此目的)public async void Set(IEnumerable coll...

c# – Parallel.Foreach和Task冲突【代码】

我在并行执行中将图像上传到云端:// Make a TaskFactory that will use the UI thread's context var uiFactory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());Parallel.ForEach(FinalFileNames,new ParallelOptions { MaxDegreeOfParallelism = 4 },path =>{count++;/* Calculate percentage of upload done */double iPercentDone = (int)(((float)count / iTotalFiles) * 100);// Send the progress ...

c# – 为什么在Array.ForEach中输出333不是0112?【代码】

参见英文答案 > Is there a reason for C#’s reuse of the variable in a foreach? 5个为什么下面的代码输出333不是012?我认为代码是如此简单,我检查和检查,仔细检查,三重检查,还不能得到答案.任何人都可以帮助我吗?Action[] tmp = new Action[3];for (int i = 0; i < tmp.Length; i++) {tmp[i] = () => Console.WriteLine(i); }Array.ForEach(tmp, m => m());Console.Read();解决方法:您应...

c# – 为什么ILGenerator将Leave指令插入Foreach语句【代码】

我生成以下代码:public override void Map(IEnumerable enumerable1) {List<int> list = new List<int>();foreach (object obj2 in enumerable1){} }通过Emit 这是完整的代码:MethodBuilder mapMethod = typeBuilder.DefineMethod("Map", MethodAttributes.Public | MethodAttributes.Virtual, typeof(void), new[] { typeof(IEnumerable) });ILGenerator il = mapMethod.GetILGenerator(); LocalBuilder result = il.DeclareLoc...

c# – 在Parallel.ForEach()循环中等待的行为是什么?【代码】

我有一个计算密集型程序,我试图并行化,但其中一个限制步骤是I / O操作,它由一个非常低效的API控制,我无法控制,但别无选择,只能使用.我的并行化必须不会增加I / O操作的数量,否则任何好处都可能很快消失. 布局是这样的:我有两个类,Foo和Bar,并且为了计算Foo,它涉及不小的计算量,我必须传递一个实例,或者我从一些导入的Bar的一些实例非常昂贵的I / O操作中的其他文件.我需要大量的Foo和Bar实例,并且许多这些Bar实例将用于计算多个Fo...

c# – 如何从主UI线程使用Parallel.ForEach【代码】

我尝试使用Parallel.ForEach从主线程做我的东西:private List<MyData> MyCollection; private static CancellationTokenSource _tokenSource;private void Start(){ThreadStart threadStart = delegate{var token = _tokenSource.Token;Task.Factory.StartNew(() =>{try{Parallel.ForEach(MyCollection,new ParallelOptions{MaxDegreeOfParallelism = (int)nudConcurrentFiles.Value //limit number of parallel threads },file =...

c# – 使用Parallel.ForEach时如何发送进度

我打算在DataTable上使用Parallel.ForEach,以便可以将每条记录写入文件. 我们如何通知用户处理的记录的百分比/数量. 通常,当我们使用Background worker时,我们会有一个ProgressChanged事件,用户会收到完成工作百分比的通知.我们如何使用Parallel.ForEach或Multiple任务实现这一目标? 谢谢,兔子解决方法:您将需要一个从0开始的(共享)计数器,并在每个部分的末尾增加(使用Interlocked). 然后你需要 >触发事件,事件必须使用Invoke(或D...

C# – “foreach”和扩展方法之间的区别:ForEach

任何人都可以指出C#语句和它们相似的扩展方法之间的差异吗?例如:foreach vs. .ForEach(扩展方法). 如果有任何差异,他们是什么?安全明智吗?表现明智吗?哪一个更好用?哪一个更安全?等等 如果没有差异,为什么还要写它们呢? 我一直在思考和搜索这个问题,如果我的,并没有找到我的答案.解决方法:这取决于您使用的扩展方法的实现.在内部,大多数版本的.ForEach并没有什么特别之处. 在app加载和编译时加载扩展方法会有最小/可忽略的...

c# – foreach或GetEnumerator()中的产量?【代码】

在这种情况下哪个更好:IEnumerator<Cat> EnumerateCats() {var rawCats = GetRawCats();foreach(var cat in rawCats){var typedCat = new Cat{ Name = cat.Key;Breed = cat.Value;};yield return typedCat;} }要么IEnumerator<Cat> EnumerateCats() {return GetRawCats().Select(cat => new Cat{ Name = cat.Key;Breed = cat.Value;}).GetEnumerator(); }我更喜欢上一个代码示例.它的工作方式与第一个相同吗?解决方法:我不确定...

c# – 将foreach循环更改为Parallel.ForEach和奇怪的错误【代码】

我使用传统语法编写了几个循环foreach(x in xs) {....}其中一些循环在计算方面非常密集,我只是使用这样的并行语法更改它们:Parallel.ForEach(x, xs => {...});我看到性能大幅提升!!现在我的问题是:我是否使用并行多线程引入错误?我读到线程安全性很复杂,可能会产生奇怪的错误;我应该关注什么?解决方法:访问共享状态很可能不会产生所需的结果.简单的例子:int sum = 0; for (int i = 0; i < 1000000; i++) {sum++; }将此更改为P...

c# – Parallel.ForEach中的WebClient.DownloadFile()【代码】

这段代码工作正常:Parallel.ForEach(photos, item =>{WebClient webClient = new WebClient();webClient.DownloadFile(item.src_big, "C:\\pic" + item.ID + ".jpg");});虽然此代码抛出“WebClient请求期间发生异常”. :foreach (Photo p in photos){Task.Factory.StartNew(() =>{WebClient webClient = new WebClient();webClient.DownloadFile(p.src_big, "C:\\pic" + p.ID + ".jpg");});}我有两个问题: 1)在第一个代码中,我使...

如何将Parallel.ForEach的结果发布到在C#中不断读取的队列中【代码】

在我的应用程序中,我有三个类,Extractor,Transformer和Loader,由第四类协调员协调.提取器,变压器和装载机非常简单,并执行以下操作: 抽出器 公开一个名为Results of IEnumerable< string>的成员,例如通过从文本文件中读取.提取应该是同步的. 变压器 公开一个名为Transform的成员,它接受一个字符串并通过某个过程将其转换为另一个字符串,这个过程预计很费时(在这里使用并行处理). 装载机 公开一个名为Load的成员,它接受一个字符串并...

单元测试 - 相关标签