草庐IT

list_block

全部标签

c# - 返回 List<T> 的只读包装器的哪种方式更可取?

比如说,我们有一个带有私有(private)列表的通用类。我们至少可以通过两种方式让它返回此列表的只读包装器:publicclassTest{publicListlist=newList();publicIEnumerableValues1{get{foreach(Tiinlist)yieldreturni;}}publicIEnumerableValues2{get{returnlist.AsReadOnly();}}}Values1和Values2都反射(reflect)了底层集合中的任何变化,并防止它通过自身进行修改。哪种方式更可取?应该注意什么?或者还有其他更好的方法吗?

c# - 条件为假时执行的 If 语句 True block

我优化了一个扩展方法来比较两个流的相等性(字节对字节)——知道这是一个热门方法,我尝试尽可能地优化它(流可以达到数兆字节的长度)。我基本上想出了以下方法:[StructLayout(LayoutKind.Explicit)]structConverter{[FieldOffset(0)]publicByte[]Byte;[FieldOffset(0)]publicUInt64[]UInt64;}//////Comparestwostreamsforbyte-by-byteequality.//////Thetargetstream.///Thestreamtocomparethetar

c# - 为什么在 finally block 中不允许等待?

为什么await不允许出现在finallyblock中?publicasyncvoidFn(){try{}finally{awaitTask.Delay(4000);}}知道可以手动获取AwaiterpublicvoidFn(){try{}finally{varawaiter=Task.Delay(4000).GetAwaiter();}} 最佳答案 取自:Wherecan’tIuse“await”?Insideofacatchorfinallyblock.Youcanuse“await”insideofatryblock,rega

c# - 在 c# 中设置/扩展 List<T> 长度

给定一个List在c#中有没有办法扩展它(在其能力范围内)并将新元素设置为null?我想要类似memset的东西.我不是在这里寻找糖,我想要快速代码。我知道在C中,操作可以在每个条目1-3个asm操作中完成。我找到的最佳解决方案是this:list.AddRange(Enumerable.Repeat(null,count-list.Count));但是这是c#3.0(首选我当前的代码使用:while(list.Count所以这是时间成本的起点。motivationforthis是我需要设置第n个元素,即使它在旧计数之后。 最佳答案

c# - PowerShell:将 block 作为参数传递给函数

我会用一个例子来解释我的问题。让我们在C#中编写以下代码:voidA(Actionblock){B(()=>{Console.WriteLine(2);block();});}voidB(Actionblock){Console.WriteLine(1);block();}voidMain(){A(()=>{Console.WriteLine(3);});}这段代码的输出是:123现在,我想在PowerShell中编写这段代码:functionA($block){B{2.$block}}functionB($block){1.$block}A{3}但是,这段代码会导致调用深度溢出:Th

c# - itextsharp 测量 block 宽度/高度

我正在尝试与iTextSharp进行一些精确对齐,但我总是做不到,因为我想不出一种方法来获取block或段落的宽度/高度值。如果我创建一个具有特定字体、大小和文本的段落,那么它的尺寸应该是已知的,对吗?我知道默认的左/右/居中对齐方式对我来说最有用,但在某些情况下,知道尺寸最有用。有什么想法吗? 最佳答案 您可以使用GetWidthPoint()获取block的宽度,block的高度通常是字体的大小,除非您只使用小写字母。如果是这样,那么您可以使用BaseFont.GetCharBBox()手动测量字符。但是,段落是可流动的项目,它

c# - 检查两个 List<T> 是否相等的最快方法

我有两个列表ListA和ListB两者都有1000条记录。Emp是Employee类的一个对象。下面是我的Employee类publicclassEmployee{intID=0;stringName=String.Empty;stringDept=String.Empty;stringAddress=String.Empty;intAge=0;stringEmail=String.Empty;}我想验证两个列表是否相等。Emp对象可以按不同的顺序放置。此外,可能有多个Emp对象在两个列表中具有完全相同的信息。我也必须验证这些。我尝试对列表进行排序并使用SequenceEqual进行比

c# - List.ForEach 在技术上是 LINQ 的一部分吗?

目前对我来说,LINQ只是一个松散的、无定形的概念云,通常与数据访问有关,但也与lambda表达式、委托(delegate)、匿名函数和扩展方法结合,它是关于字符串和集合操作的,所以我想把它固定下来。当我写下面的代码时,我能说我在“使用LINQ”吗?Listwords=newList(){"one","two","three"};words.ForEach(word=>Console.WriteLine(word.ToUpper()));例如“ForEach”方法被广泛称为“LINQ方法”,但它的家在System.Collections.Generic.List而不是System.Li

c# - 以编程方式在文本之间制作带有超链接的文本 block

在XAML中,我有以下代码:clickhereplease现在我想摆脱整个TextBlockXAML并以编程方式添加该位。我可以毫不费力地创建TextBlock,将Text属性设置为“请单击”并将超链接添加到TextBlock.Content。但是如何将超链接定位在“点击”和“请”之间?以及如何将超链接的文本设置为“此处”?我没有太多进展,到目前为止我得到的是:label2.Content=newTextBlock(){Text="clickplease"};//(label2.ContentasTextBlock).Contentdoesnotexist?//andevenifitd

c# - 当 T 未知时,如何使用反射执行 List<object>.Cast<T>

我已经尝试了好几个小时了,这就是我所能做到的了varcastItems=typeof(Enumerable).GetMethod("Cast").MakeGenericMethod(newType[]{targetType}).Invoke(null,newobject[]{items});这让我回来了System.Linq.Enumerable+d__aa`1[MyObjectType]而我需要(对于我的ViewData)作为通用列表,即System.Collections.Generic.List`1[MyObjectType]任何指针都会很棒 最佳答案