在TypeScript中,我可以将函数的参数声明为Function类型.是否存在一种"类型安全"的方式来解决这个问题?例如,考虑一下:
class Foo {
save(callback: Function) : void {
//Do the save
var result : number = 42; //We get a number from the save operation
//Can I at compile-time ensure the callback accepts a single parameter of type number somehow?
callback(result);
}
}
var foo = new Foo();
var callback = (result: string) : void => {
alert(result);
}
foo.save(callback);
Run Code Online (Sandbox Code Playgroud)
保存回调不是类型安全的,我给它一个回调函数,其中函数的参数是一个字符串,但我传递一个数字,并编译没有错误.我可以在保存类型安全功能时创建结果参数吗?
TL; DR版本:在TypeScript中是否有等效的.NET委托?
说我有三个词
d1={1:2,3:4}
d2={5:6,7:9}
d3={10:8,13:22}
Run Code Online (Sandbox Code Playgroud)
如何创建一个d4结合这三个词典的新内容?即:
d4={1:2,3:4,5:6,7:9,10:8,13:22}
Run Code Online (Sandbox Code Playgroud) 什么是Kestrel Web服务器以及它与IIS/IIS Express的关系?
我来自在IIS Express上开发应用程序并在IIS Web服务器上托管它们.使用ASP.NET Core我依赖于Microsoft.AspNetCore.Server.Kestrel我的启动.UseServer("Microsoft.AspNetCore.Server.Kestrel").但是当我运行我的网站时,我仍然在系统托盘中获得IIS Express图标.有人问我是否使用IIS Express或Kestrel,我不知道该说些什么!
我没有任何跨平台要求,因为我在PC上开发并在Azure中托管,所以我很困惑,如果我甚至是needKestrel,但它似乎没有替代品 - 即使最简单的样本也使用Kestrel.
当我使用Windows Ping远程系统时,它说没有回复,但是当我用c#ping时,它表示成功.Windows正确,设备未连接.为什么我的代码能够在Windows不成功时成功ping?
这是我的代码:
Ping p1 = new Ping();
PingReply PR = p1.Send("192.168.2.18");
// check when the ping is not success
while (!PR.Status.ToString().Equals("Success"))
{
Console.WriteLine(PR.Status.ToString());
PR = p1.Send("192.168.2.18");
}
// check after the ping is n success
while (PR.Status.ToString().Equals("Success"))
{
Console.WriteLine(PR.Status.ToString());
PR = p1.Send("192.168.2.18");
}
Run Code Online (Sandbox Code Playgroud) 在C#6中,您可以通过使用仅限getter的自动属性来简化属性的实现.例如,如果我正在实现抽象Stream类:
public override bool CanRead { get; } = true;
Run Code Online (Sandbox Code Playgroud)
但是我也可以用表达式体写它,在C#6中也是新的:
public override bool CanRead => true;
Run Code Online (Sandbox Code Playgroud)
两者之间有什么区别,什么时候应该使用其中一个?
bootstrap 2.0是否有任何助手可以使.span1,.span2 ...... .span12等于高度.我已经嵌套了这种类型的HTML
<div class='container'>
<div class='row'>
<div class='span2'>
<div class='well'>
XXXX
</div>
</div>
<div class='span2'>
<div class='well'>
XXXX
XXXX
</div>
</div>
<div class='span2'>
<div class='well'>
XXXX
XXXX
XXXX
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我希望每个井都达到相同的高度?
考虑一下这个Reactive Extensions片段(忽略它的实用性):
return Observable.Create<string>(async observable =>
{
while (true)
{
}
});
Run Code Online (Sandbox Code Playgroud)
这不能使用Reactive Extensions 2.2.5(使用NuGet Rx-Main包)进行编译.它失败了:
错误1以下方法或属性之间的调用不明确:'System.Reactive.Linq.Observable.Create <string>(System.Func <System.IObserver <string>,System.Threading.Tasks.Task <System.Action> >)'和'System.Reactive.Linq.Observable.Create <string>(System.Func <System.IObserver <string>,System.Threading.Tasks.Task>)'
但是,break在while循环中添加任何位置可以修复编译错误:
return Observable.Create<string>(async observable =>
{
while (true)
{
break;
}
});
Run Code Online (Sandbox Code Playgroud)
这个问题可以在没有Reactive Extensions的情况下重现(如果你想在没有摆弄Rx的情况下尝试它,会更容易):
class Program
{
static void Main(string[] args)
{
Observable.Create<string>(async blah =>
{
while (true)
{
Console.WriteLine("foo.");
break; //Remove this and the compiler will break
}
});
}
}
public class Observable
{
public static IObservable<TResult> Create<TResult>(Func<IObserver<TResult>, Task> subscribeAsync)
{ …Run Code Online (Sandbox Code Playgroud) 尝试在iOS6中运行它(尚未测试iOS6之前):
NSDateFormatter *julianDayDateFormatter = nil;
julianDayDateFormatter = [[NSDateFormatter alloc] init];
[julianDayDateFormatter setDateFormat:@"g"];
for (NSString *timeZone in [NSTimeZone knownTimeZoneNames]) {
julianDayDateFormatter.timeZone = [NSTimeZone timeZoneWithName: timeZone];
NSDate *date = [julianDayDateFormatter dateFromString:[NSString stringWithFormat:@"%d", 2475213]];
if (date == nil)
NSLog(@"timeZone = %@", timeZone);
}
Run Code Online (Sandbox Code Playgroud)
并得到以下输出:
America/Bahia
America/Campo_Grande
America/Cuiaba
America/Sao_Paulo
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么这四个时区的行为是这样的,NSDateFormatter设置为朱利安日数?所有其他时区使NSDateFormatter返回实际的NSDates.
使用AutoMapper,我找到了一个命名参数非常适合的地方:
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, isAdvanced: false)))
Run Code Online (Sandbox Code Playgroud)
但编译器对我大吼:
表达式树可能不包含命名参数规范
所以我不得不回复:
.ForMember(s => s.MyProperty, opt => opt.MapFrom(s => BuildMyProperty(s, false)))
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么编译器在这种情况下不允许使用命名参数?
c# ×5
asp.net ×2
asp.net-core ×2
c#-4.0 ×1
c#-6.0 ×1
css ×1
dictionary ×1
iis ×1
ios6 ×1
julian-date ×1
nsdate ×1
objective-c ×1
ping ×1
python ×1
typescript ×1