小编Ome*_*Mor的帖子

这是C#4中的协方差错误吗?

在下面的代码我希望能够隐式地从投elementsbaseElements因为TBase可以隐式转换IBase.

public interface IBase { }
public interface IDerived : IBase { }
public class VarianceBug
{
    public void Foo<TBase>() where TBase : IBase
    {
        IEnumerable<TBase> elements = null;
        IEnumerable<IDerived> derivedElements = null;
        IEnumerable<IBase> baseElements;

        // works fine
        baseElements = derivedElements;

        // error CS0266: Cannot implicitly convert type 
        //   'System.Collections.Generic.IEnumerable<TBase>' to 
        //   'System.Collections.Generic.IEnumerable<IBase>'. 
        //   An explicit conversion exists (are you missing a cast?)
        baseElements = elements;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到了评论中提到的错误.

引用规范:

A型T<A1, …

c# generics covariance

37
推荐指数
2
解决办法
1659
查看次数

C# - 用于Windows窗体应用程序的BitPps的SetPixel和GetPixel的更快替代品

我正在尝试自学C#,并从各种来源听说函数get和setpixel可能非常慢.有哪些替代方案,性能改进真的那么重要吗?提前致谢!

我的一大块代码供参考:

public static Bitmap Paint(Bitmap _b, Color f)
{
  Bitmap b = new Bitmap(_b);
  for (int x = 0; x < b.Width; x++) 
  {
    for (int y = 0; y < b.Height; y++) 
    {
      Color c = b.GetPixel(x, y);
      b.SetPixel(x, y, Color.FromArgb(c.A, f.R, f.G, f.B));
    }
  }
  return b;
}
Run Code Online (Sandbox Code Playgroud)

c# drawing gdi+ getpixel

37
推荐指数
3
解决办法
5万
查看次数

加入Rx Streams

我正在尝试建模一个不简单的Rx查询(对我而言):

  • 在一个房间里有男人和女人.
  • 他们进入和离开房间,而在房间里他们有时会改变他们的位置.
  • 每个男人都可以在特定的时间看一个(或零)女人.
  • 每个人都有以下属性:

    class Man
    {
      public const int LookingAtNobody = 0;
      public int Id { get; set; }
      public double Location { get; set; }
      public int LookingAt { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 每个女人都有以下特性:

    class Woman
    {
      public int Id { get; set; }
      public double Location { get; set; }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 代表我们拥有的男人IObservable<IObservable<Man>>,代表我们拥有的女人IObservable<IObservable<Woman>>.

你如何使用Rx生成从男人到他们正在看的女人的载体:IObservable<IObservable<Tuple<double,double>>>

为了帮助,这里有一些针对一些简单情况的单元测试:

public class Tests : ReactiveTest
{
    [Test]
    public void Puzzle1()
    {
        var scheduler = new TestScheduler(); …
Run Code Online (Sandbox Code Playgroud)

c# linq system.reactive

25
推荐指数
1
解决办法
1681
查看次数

使用map()将字符串转换为整数

在下面我试图使用map函数将第一个列表转换为整数列表,我该如何实现这一点

T1 = ['13', '17', '18', '21', '32']
print T1
T3=[map(int, x) for x in T1]
print T3
[[1, 3], [1, 7], [1, 8], [2, 1], [3, 2]]

Expected is:

T3=[13,17,18,21,32] 
Run Code Online (Sandbox Code Playgroud)

python

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

C++ 11 lambdas到函数指针

我开始使用C++ 11 lambdas开发应用程序,并且需要将某些类型转换为函数指针.这在GCC 4.6.0中完美运行:

void (* test)() = []()
{
    puts("Test!");
};

test();
Run Code Online (Sandbox Code Playgroud)

我的问题是当我需要在lambda中使用函数或方法局部变量时:

const char * text = "test!";

void (* test)() = [&]()
{
    puts(text);
};

test();
Run Code Online (Sandbox Code Playgroud)

G ++ 4.6.0给出了强制转换错误代码:

main.cpp: In function 'void init(int)':
main.cpp:10:2: error: cannot convert 'main(int argc, char ** argv)::<lambda()>' to 'void (*)()' in initialization
Run Code Online (Sandbox Code Playgroud)

如果使用auto,它可以正常工作:

const char * text = "Test!";

auto test = [&]()
{
    puts(text);
};

test();
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何用[&]为lambda创建一个类型?在我的情况下,我不能使用STL std :: function(因为我的程序不使用C++ RTTI和EXCEPTIONS运行时),并且它有一个简单的函数实现来解决这个问题?

c++ c++11

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

Rx.Net消息解析器

我正在尝试解析表示消息的传入字节流.我需要拆分流并为每个部分创建一个消息结构.

消息始终以0x81(BOM)开头,以0x82(EOM)结束.

start:  0x81
header: 3 bytes
data:   arbitrary length
stop:   0x82
Run Code Online (Sandbox Code Playgroud)

数据部分使用转义字节0x1B(ESC)进行转义:只要数据部分中的一个字节包含控制字节{ESC,BOM,EOM}之一,就会以ESC为前缀.

标题部分不会被转义,并且可能包含控制字节.

我想使用Rx.Net以功能性的反应式编码,通过消费IObservable<byte>并将其转换为IObservable<Message>.

最常用的方法是什么?

一些例子:

[81 01 02 03 82] single message
[81 82 81 82 82] single message, header = [82 81 82]
[81 01 02 1B 82] single message, header = [01 02 1B].
[81 01 02 03 1B 82 82] single message, header = [01 02 03], (unescaped) data = [82]
[81 01 02 03 1B 1B 82 82] single message …
Run Code Online (Sandbox Code Playgroud)

c# linq system.reactive rx.net

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

WPF - 向左展开窗口

我有一个带可扩展面板(via Expander)的WPF窗口.面板位于窗口的左侧,展开后窗口会增大以适应内容.

默认情况下,窗口固定在左上角,因此我的窗口向右移动.我希望窗户向左侧增长.

我试图在Window.SizeChanged事件中做以下事情:

private void onWindowSizeChanged(object sender, SizeChangedEventArgs e)
{
    Left -= (e.NewSize.Width - e.PreviousSize.Width)
}
Run Code Online (Sandbox Code Playgroud)

它有效,但增长不稳定,我想找到一个更顺畅的解决方案.

wpf resize expander

7
推荐指数
1
解决办法
3461
查看次数

使用BitTorrent在多个站点之间进行文件复制/同步

我需要构建一个依赖于在站点之间复制大文件的分布式系统.

我想过使用像bittorrent这样的p2p技术来节省带宽,提高可靠性.

我非常错吗?

有没有人构建过这样的解决方案?

你推荐哪些图书馆?

replication distributed synchronization p2p bittorrent

7
推荐指数
1
解决办法
5336
查看次数

如何验证温莎城堡的配置

我想声明我的注册是有效的,即没有缺少依赖,并且没有循环依赖.
我想在我的应用程序中执行此操作(而不是在单元测试中),因此如果配置无效,我将能够快速失败.
我还希望在不解析(并实例化)所有组件的情况下实现这一点 - 仅通过扫描依赖关系图.
关于我怎么做的任何想法?

动机是配置复杂应用程序的反复试验性质.如果容器配置错误,我宁愿获得快速失败的行为.

顺便说一句 - 我的灵感来自AutoMapper的AssertConfigurationIsValid()方法.

validation configuration castle-windsor ioc-container inversion-of-control

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

带有WPF中样本数据的ListBox的设计时间总体

我有一个包含列表框的视图(usercontrol).在运行时,列表框将填充另一个视图的实例(也是用户控件).如何在设计时(在Blend和Cider中)使用自己填充样本数据的样本视图填充列表框?

wpf design-time blend mvvm

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