草庐IT

c# - 如何设置属性网格的列宽?

我在我的应用程序中使用属性网格来显示对象属性的名称和值。默认情况下,列(名称和属性)的宽度比例为50:50。我们可以选择滑动分离器来改变这个宽度。我想知道如何以编程方式调整此宽度,以便将其设置为25:75。 最佳答案 我发现hamed的解决方案不能可靠地工作。我已经通过以编程方式模拟用户拖动列拆分器来解决它。以下代码使用反射来执行此操作:publicstaticvoidSetLabelColumnWidth(PropertyGridgrid,intwidth){if(grid==null)return;FieldInfofi=gri

c# - 在 TPL 数据流中使用 async/await 和 yield return

我正在尝试使用TPLDataflow实现数据处理管道.但是,我对数据流比较陌生,并不完全确定如何正确使用它来解决我要解决的问题。问题:我正在尝试遍历文件列表并处理每个文件以读取一些数据,然后进一步处理该数据。每个文件大概是700MB至1GB在尺寸方面。每个文件包含JSON数据。为了并行处理这些文件而不是运行内存,我正在尝试使用IEnumerable与yieldreturn然后进一步处理数据。获得文件列表后,我想同时处理最多4-5个文件。我的困惑来自:如何使用IEnumerable和yeildreturn与async/await和数据流。偶遇thisanswer通过svick,但仍然不确

c# - C#中的工程符号?

是否有任何代码(或内置函数)允许以工程符号输出float?例如,1.5e-4将显示为150µ,5e-3将显示为5m。 最佳答案 这可能需要重构:privatestaticstringToEngineeringNotation(thisdoubled){doubleexponent=Math.Log10(Math.Abs(d));if(Math.Abs(d)>=1){switch((int)Math.Floor(exponent)){case0:case1:case2:returnd.ToString();case3:case4:ca

c# - Linq扩展方法,如何在集合递归中查找子项

我已经熟悉Linq,但对扩展方法知之甚少,希望有人能帮助我。所以我有这个分层集合伪代码即:classProductpropnameproptypepropidpropListchildren我有一个产品列表Listproducts.有什么方法可以通过扩展方法通过id查找此集合中的产品吗?换句话说,我需要层次结构中某处的一项。 最佳答案 这是一个通用的解决方案,一旦找到匹配项,它就会短路层次结构的遍历。publicstaticclassMyExtensions{publicstaticTFirstOrDefaultFromMany(t

无法从具有多个返回的 Select 中的用法推断出 C# 类型参数

我不认为我在做任何太深奥的事情,但我没有看到任何其他关于此的问题。以下代码(我已将其简化为基本要素)在C#4中生成编译器错误。但是,类型参数是什么应该是显而易见的-最大公分母(“A类”)也是在方法“Frob”的返回类型中明确定义。编译器不应该列出lambda表达式中的所有返回类型,创建一个祖先树来找到它们的共同祖先,然后将其与包含方法的预期返回类型进行协调吗?Thetypeargumentsformethod'System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable,System.Func)'cannotb

c# - 有没有办法在 Visual Studio 中自动生成 equals 和 hashcode 方法

在Java中,当你想通过remove()方法从通用Collection中正确删除对象时,你必须实现equals(Objecto)和remove()方法,可以在Eclipse中自动生成。该方法的示例如下所示--->。如何在C#中自动生成该方法(VisualStudio,我使用的是VS2013)?也许没有必要使List.Remove()方法正常工作?如果不能自动引用Equals方法应该是什么样子?我的意思是它应该是什么样子。Equals()方法甚至用在List.Remove()中吗?如果是这样,你能告诉我Equals()如果我们比较相同的对象(内存中的相同地址),应该实现返回true@Ov

c# - 如何避免在 C# 中出现不可能的 bool 状态?

考虑这个函数,您可以将其视为真值表:publicFoodoSomething(boola,boolb){if(a&&b)returndoAB();elseif(a&&!b)returndoA();elseif(!a&&b)returndoB();elseif(!a&&!b)returndoNotANotB();elsethrownewException("Welldone,youdefeatedbooleanlogic!");}编译器坚持最后一个else子句。但从真值表的角度来看,这是不可能的状态。是的,它有效,是的,我可以接受它。但我想知道C#中是否有某种机制可以避免这种代码,或者我

c# - 可访问性不一致 : return type is less accessible than method C#

好吧,这真的很奇怪。我有一个私有(private)成员,我想将它用于Form2。我创建了一个公共(public)静态方法,以便我可以将该成员放入Form2。这是我的代码:privatestaticAppControllerappController;privateBreadRepositorybreadRep;privateCakeRepositorycakeRep;privateSandwichRepositorysandwichRep;publicForm1(){InitializeComponent();breadRep=newBreadRepository();cakeRep=

c# - 取消SemaphoreSlim.WaitAsync保持信号量锁

在我们的一个类(class)中,我们大量使用SemaphoreSlim.WaitAsync(CancellationToken)并取消它。当对WaitAsync的挂起调用在调用SemaphoreSlim.Release()后不久被取消时,我似乎遇到了问题(很快,我的意思是在ThreadPool有机会处理排队的项目之前),它将信号量置于无法获取进一步锁定的状态。由于ThreadPool项是否在调用Release()和Cancel()之间执行的不确定性,以下示例并不总能说明问题,对于那些情况,我已明确表示要忽略该运行。这是我试图证明问题的例子:voidMain(){for(vari=0;i

c# - 如何将静态类包装在非静态实例对象中(动态地)

我有一个有趣的问题。我需要动态包装静态类。IE。向我的调用者返回一个非静态实例。例如:publicobjectCreateInstance(stringclassName){Typet=assembly.GetType(className);if(IsStatic(t)){returnCreateStaticWrapper(t);}else{returnActivator.CreateInstance(t);}}所以我需要的是关于如何实现CreateStaticWrapper的指导。注意:不幸的是我不能使用Dynamic对象。那么我的选择是什么?我不是那么热衷于学习IL生成?如果IL生