小编Mig*_*MoS的帖子

如何使[DebuggerDisplay]尊重继承的类或至少使用集合?

我有一个继承自a的类List<MagicBean>.除了一个:当我添加[DebuggerDisplay]属性时,它在所有方面都运行良好且符合预期.即使看着List有它[DebuggerDisplay("Count = {Count}")],如果我将它复制并粘贴到我的身上,我也无法直接查看我所有的MagicBeans而无需在调试时钻入base-> private成员.

我如何充分利用这两个世界?IE:值列中的自定义值,Visual Studio没有隐藏我的魔豆?

c# debugging visual-studio-2008-sp1 visual-studio-2008 visual-studio

14
推荐指数
1
解决办法
2794
查看次数

将构造函数作为C#中的函数调用

在C#中有一种方法可以将类构造函数作为标准函数引用吗?原因是Visual Studio抱怨用lambdas修改函数,并且通常是一个简单的select语句.

例如var ItemColors = selectedColors.Select (x => new SolidColorBrush(x));,selectedColors只是一个IEnumerable<System.Windows.Media.Color>.

从技术上讲,lambda不应该是多余的吗?select接受一个类型T并返回类型U的函数.纯色画笔在这里采用(正确的)类型T并返回一个U.只有我看不到在C#中这样做.在F#中它会是这样的let ItemColors = map selectedColors (new SolidColorBrush).

TL; DR:我想我正在寻找有效的形式,var ItemColors = selectedColors.select (new SolidColorBrush)其中不需要lamba.这在C#中是可能的还是语言无法表达这种结构?

c# lambda

9
推荐指数
2
解决办法
1796
查看次数

多态性是否值得增加耦合?

我正在编写一个简单的游戏来学习获得更多的C++经验,我有一个想法,我觉得多态几乎可以工作,但没有.在这个游戏中,Party移动相当线性地通过一个Map,但偶尔可以Fork在路上遇到一个.fork(基本上)是一个std::vector<location*>.Originally我打算在Party成员函数中编写如下代码:

if(!CurrLocation->fork_.empty())
   // Loop through forks and show options to the player, go where s/he wants
else
  (CurrLocation++)
Run Code Online (Sandbox Code Playgroud)

但我想知道以下某些变体是否会更好:

CurrLocation = CurrLocation->getNext();
Run Code Online (Sandbox Code Playgroud)

使用Fork实际上是从Location派生的,并且重载了一些新功能getNext().但在后一种情况下,在location(低层次结构)将不得不提出的信息给用户,而不是"通过这个备份",我不觉得是优雅的,因为它夫妻一个locationUserInterface::*.

你的意见?

c++ polymorphism coupling

6
推荐指数
1
解决办法
586
查看次数

进化或革命来修复写得不好的代码

我为我的个人项目做了一些工作,现在我理解为什么人们告诉我们编码之前计划出所有的接口和设计.我有一些好的课程,已经有一些工作代码,但总的来说组织(架构)有点乱,我已经说过"如果我再做一次,我会这样做. ..".问题是,我是否应该勾画出一个关于我希望我的代码看起来如何的计划,并将现有代码重构为新模型,或者我是否应该采用有效的方法,并为缺陷部分编写所有新代码(基本上开始)从头开始,从这个项目中获得相当数量的复制和粘贴).

我有git历史我不确定我想失去,但慢慢重写一切的任务似乎令人生畏.所以我要问的问题是:在重构一个年轻的项目时,是否应该使用进化或革命来第二次纠正它?

refactoring

6
推荐指数
1
解决办法
409
查看次数

诸如[DebuggerDisplay]之类的调试属性是否仍会编译到Release二进制文件中?

最近了解了DebuggerDisplay属性,我发现它非常有用。但是,令我惊讶的一件事是它没有[ConditionalAttribute("DEBUG")]附加属性。有某种方法可以强制执行此操作,还是尝试尝试一个坏主意?还是因为其他原因没关系?

c# debugging release-management

4
推荐指数
1
解决办法
475
查看次数

使用Seq.cast的问题

使用Seq.cast似乎经常失败,即使对于如下简单的事情:

let xor c = Seq.cast c |> Seq.reduce (^^^)
xor [1;3]       // Works, assuming because no cast is necessary
xor ['a';'b']   // Fails
xor [2u]        // Fails
Run Code Online (Sandbox Code Playgroud)

后两者失败,Specified Cast无效.我错过了什么?

我试图用来Seq.cast转换一堆东西uint16,但由于某种原因它总是失败(即使我用它注释Seq.cast<uint32>).怎么了?

.net f# seq

2
推荐指数
1
解决办法
505
查看次数

如何混合/修复IComparable和IComparable <T>混乱

我有一个辅助函数,它基本上在两个对象上调用CompareTo,但是会进行一些特殊的角点检查,转换等.

本来我写这个函数是这样的:

public static bool BetterCompare(IComparable lhs, IComparable rhs, out retCode)
{
    ...
    retCode = lhs.CompareTo(rhs);
    ...
}
Run Code Online (Sandbox Code Playgroud)

但问题是,如果我有一个class AwesomeClass : IComparable<AwesomeClass>.事实上,我有几个老IComparable课程已经消失了IComparable<T>.然而编译器生气,因为它无法将这些新对象转换为IComparable.我不知道这是否会使情况变得更糟,但其中一些是abstract(虽然抽象类确实提供了实现).

我怎么能传达"我想要两个我可以称之为CompareTo的对象",而不是让编译器给我任何嘴唇.优选地,新功能看起来不应该BetterCompare<AwesomeClass>(this, that, out retCode);,但只是"做正确的事情".或者有没有更好的方法来做到这一点,而不是触及每个类,使他们两个 IComparableIComparable<T>

c# generics icomparable

0
推荐指数
1
解决办法
1553
查看次数

在C#中实现像CopyTo这样的memcpy()的简单方法

是否有一个"简单"的方式来实现类似CopyTo()MemberwiseCopy(而不是Clone()或者MemberwiseClone在C#)?我不想创建一个新对象,因为我希望每个拥有旧对象的人都能够看到新对象的属性,这可能是完全不同的.虽然大多数这些派生自一个可以保留一些抽象函数的父类,但我不想写几百行代码只是为了逐个复制每个成员.可能需要复制所有这些(糟糕的设计,但它不是我的,也不是被重写).看起来微软会为此创建一个界面,还是我错过了什么?

c# memcpy

0
推荐指数
1
解决办法
1738
查看次数