在下面的代码我希望能够隐式地从投elements至baseElements因为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#,并从各种来源听说函数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) 我正在尝试建模一个不简单的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) 在下面我试图使用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) 我开始使用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运行时),并且它有一个简单的函数实现来解决这个问题?
我正在尝试解析表示消息的传入字节流.我需要拆分流并为每个部分创建一个消息结构.
消息始终以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) 我有一个带可扩展面板(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)
它有效,但增长不稳定,我想找到一个更顺畅的解决方案.
我需要构建一个依赖于在站点之间复制大文件的分布式系统.
我想过使用像bittorrent这样的p2p技术来节省带宽,提高可靠性.
我非常错吗?
有没有人构建过这样的解决方案?
你推荐哪些图书馆?
我想声明我的注册是有效的,即没有缺少依赖,并且没有循环依赖.
我想在我的应用程序中执行此操作(而不是在单元测试中),因此如果配置无效,我将能够快速失败.
我还希望在不解析(并实例化)所有组件的情况下实现这一点 - 仅通过扫描依赖关系图.
关于我怎么做的任何想法?
动机是配置复杂应用程序的反复试验性质.如果容器配置错误,我宁愿获得快速失败的行为.
顺便说一句 - 我的灵感来自AutoMapper的AssertConfigurationIsValid()方法.
validation configuration castle-windsor ioc-container inversion-of-control
我有一个包含列表框的视图(usercontrol).在运行时,列表框将填充另一个视图的实例(也是用户控件).如何在设计时(在Blend和Cider中)使用自己填充样本数据的样本视图填充列表框?
c# ×4
linq ×2
wpf ×2
bittorrent ×1
blend ×1
c++ ×1
c++11 ×1
covariance ×1
design-time ×1
distributed ×1
drawing ×1
expander ×1
gdi+ ×1
generics ×1
getpixel ×1
mvvm ×1
p2p ×1
python ×1
replication ×1
resize ×1
rx.net ×1
validation ×1