将对象传递给实现特定接口的函数是否有成本,其中函数只接受该接口?喜欢:
Change (IEnumerable<T> collection)
Run Code Online (Sandbox Code Playgroud)
我通过:
List<T>
LinkedList<T>
CustomCollection<T>
Run Code Online (Sandbox Code Playgroud)
所有这些都实现了IEnumerable.但是当你将其中的任何一个传递给Change方法时,它们是否会被转换为IEnumerable,因此有一个演员阵容,但也有失去他们独特方法的问题等等?
我知道它允许visual studio将WinForms UI代码与UI事件等分开.但它有什么实际用途吗?
编程中哪一个更好?
我不是在谈论完全排他性.对于以下内容更有用:
list<T>.Find,你得到的default(T)或你的价值,而不是ValueNotFound例外(例子).
要么
list<T>.IndexOf,你得到-1或正确的索引.
我试图通过名称找到一种优雅的方式来获取Windows窗体表单上的控件.例如:
MyForm.GetControl "MyTextBox"
...
Run Code Online (Sandbox Code Playgroud)
但这必须确保它递归地通过所有控件.
使用LINQ实现此方法的最优雅方法是什么?
我有一个类:
class Spline
int ChildrenCount;
Spline GetChild (int index)
class SplineCollection : IEnumerable<Spline>
Spline Master
Run Code Online (Sandbox Code Playgroud)
是否可以为SplineCollection写一个递归的IEnumerable,它将逐个返回所有的子节点?
编辑:所以Master是根Box,其子级的层次结构可以是任何深度.
编辑:通过使用名称Box,我认为我困惑了一些人.它意味着是一个几何对象,而不是一个容器.所以将它改为Spline.
现在我正在使用:
XElement xe = XElement.ReadFrom
Run Code Online (Sandbox Code Playgroud)
这要求XmlReader:
XmlReader reader = XmlTextReader.Create
Run Code Online (Sandbox Code Playgroud)
这需要一个字符串,这需要我通过StringReader:
new StringReader
Run Code Online (Sandbox Code Playgroud)
这要求TextReader/StreamReader最终能够将文件路径传递给它:
TextReader textReader = new StreamReader ( file );
Run Code Online (Sandbox Code Playgroud)
这是最简单的方法吗?我已经有使用的代码,XElement所以它工作正常,但我想减少XElement从xml文件获取的步骤数.就像是:
XElement xe = XElement.ReadFrom (string file);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在使用xml序列化,但现在遇到了我以前没见过的运行时错误.
"要进行XML可序列化,从IEnumerable继承的类型必须在其继承层次结构的所有级别都具有Add(System.Object)的实现.ImageEditor.EffectOptions不实现Add(System.Object)"
通过运行时异常强制实现方法似乎有点奇怪,而不是编译时间错误,例如实现的接口缺少方法.
这是设计的吗?这不应该通过某种类型的界面强制执行XmlSerializable吗?
除此之外,我想知道序列化程序是否保证传递正确类型的值,我可以将其转换为类型,在我的情况下EffectOption.
或者我应该实现此Add (object)方法以查看对象是否类型EffectOption,如果没有抛出异常?
我之前没有实现过这个Add (object)方法,但是我的猜测是EffectOption将它转换为EffectOptions集合并将其添加到集合中更安全.
编辑:这是类型本身:
public class EffectOptions : IEnumerable<EffectOption>
{
public List<EffectOption> Options { get; private set; }
//IEnumerable methods
}
Run Code Online (Sandbox Code Playgroud) 高斯,框,径向,方向,运动模糊,变焦模糊等
我读到高斯模糊可以在可以在像素着色器中实现的通道中分解,但是找不到任何样本.
假设任何与自身以外的像素有关的效果都无法在像素着色器中实现,这是正确的吗?
我尝试使用 DropShadowEffect,但当您增加 BlurRadius 时,它的“发光”强度会减弱。我想要像下图一样具有强烈的外发光。
如果我将相同的效果叠加十几次,我就能得到这个,但此后性能就会下降。使用 WPF 可以实现单一效果吗?
.net ×9
c# ×9
ienumerable ×3
exception ×2
class ×1
collections ×1
effects ×1
glow ×1
glsl ×1
gpu ×1
hlsl ×1
interface ×1
linq ×1
open-source ×1
performance ×1
pixel-shader ×1
recursion ×1
shader ×1
winforms ×1
wpf ×1
xelement ×1
xmlreader ×1