小编Joa*_*nge的帖子

C#界面问题

将对象传递给实现特定接口的函数是否有成本,其中函数只接受该接口?喜欢:

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,因此有一个演员阵容,但也有失去他们独特方法的问题等等?

.net c# performance ienumerable interface

8
推荐指数
1
解决办法
484
查看次数

C#中partial关键字的实际用法

我知道它允许visual studio将WinForms UI代码与UI事件等分开.但它有什么实际用途吗?

.net c# class

8
推荐指数
1
解决办法
1489
查看次数

例外与特殊回报值

编程中哪一个更好?

我不是在谈论完全排他性.对于以下内容更有用:

list<T>.Find,你得到的default(T)或你的价值,而不是ValueNotFound例外(例子).

要么

list<T>.IndexOf,你得到-1或正确的索引.

.net c# exception

8
推荐指数
3
解决办法
2034
查看次数

8
推荐指数
2
解决办法
7287
查看次数

使用LINQ查找Winforms的控件?

我试图通过名称找到一种优雅的方式来获取Windows窗体表单上的控件.例如:

MyForm.GetControl "MyTextBox"

...
Run Code Online (Sandbox Code Playgroud)

但这必须确保它递归地通过所有控件.

使用LINQ实现此方法的最优雅方法是什么?

.net c# linq winforms

8
推荐指数
3
解决办法
8127
查看次数

是否可以编写递归的IEnumerable <T>

我有一个类:

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.

.net c# collections recursion ienumerable

8
推荐指数
2
解决办法
3034
查看次数

如何直接读取xml文件以获取XElement值?

现在我正在使用:

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)

有任何想法吗?

.net c# xelement xmlreader

8
推荐指数
1
解决办法
1万
查看次数

为什么XmlSerializer需要从IEnumerable继承的类型具有Add(System.Object)的实现?

我正在使用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)

.net c# ienumerable serialization exception

8
推荐指数
1
解决办法
9640
查看次数

在像素着色器中可以实现什么样的模糊?

高斯,框,径向,方向,运动模糊,变焦模糊等

我读到高斯模糊可以在可以在像素着色器中实现的通道中分解,但是找不到任何样本.

假设任何与自身以外的像素有关的效果都无法在像素着色器中实现,这是正确的吗?

shader gpu glsl hlsl pixel-shader

8
推荐指数
2
解决办法
7458
查看次数

如何使用WPF效果模仿OuterGlowBitmapEffect?

我尝试使用 DropShadowEffect,但当您增加 BlurRadius 时,它的“发光”强度会减弱。我想要像下图一样具有强烈的外发光。

在此输入图像描述

如果我将相同的效果叠加十几次,我就能得到这个,但此后性能就会下降。使用 WPF 可以实现单一效果吗?

.net c# wpf effects glow

8
推荐指数
1
解决办法
796
查看次数