请解释为什么这个测试通过?
[Test]
public void TestNullOps()
{
Assert.That(10 / null, Is.Null);
Assert.That(10 * null, Is.Null);
Assert.That(10 + null, Is.Null);
Assert.That(10 - null, Is.Null);
Assert.That(10 % null, Is.Null);
Assert.That(null / 10, Is.Null);
Assert.That(null * 10, Is.Null);
Assert.That(null + 10, Is.Null);
Assert.That(null - 10, Is.Null);
Assert.That(null % 10, Is.Null);
int zero = 0;
Assert.That(null / zero, Is.Null);
}
Run Code Online (Sandbox Code Playgroud)
我不明白这个代码是如何编译的.
看起来每个带有null返回的数学表达式Nullable<T>(例如10 / null是a Nullable<int>).但是我没有在Nullable<T>课堂上看到操作员方法.如果取消这些运算符int,为什么最后的断言不会失败?
可能重复:
如何将事件传递给方法?
是否可以将事件作为参数传递给方法?
例如,以下方法订阅事件,确实有效,并取消订阅事件:
void SubscribeDoAndUnsubscribe<TElement, TEventArgs>(
IEnumerable<TElement> elements,
??? elementEvent)
where TEventArgs: EventArgs
{
EventHandler<TEventArgs> handler = (sender, e) => { /* Handle an event */ };
foreach (var element in elements)
{
// Subscribe somehow
element.elementEvent += handler
}
// Do things
foreach (var element in elements)
{
// Unsubscribe somehow
element.elementEvent -= handler
}
}
Run Code Online (Sandbox Code Playgroud)
客户代码:
var elements = new [] { new Button(), new Button() };
SubscribeDoAndUnsubscribe(elements, ??? /* e => e.Click */);
Run Code Online (Sandbox Code Playgroud)
如果不可能,我如何以其他方式实现类似的逻辑?我应该为订阅/取消订阅方法传递一对代表吗?
两者之间有什么区别吗?
function MyFunc() {
// code...
}
Run Code Online (Sandbox Code Playgroud)
和
var MyFunc = function() {
// code...
};
Run Code Online (Sandbox Code Playgroud)
在JavaScript?
我需要按以下格式列出特定本地组中的所有用户:"Domain\UserName".我可以为该组提取GroupPrincipal对象的集合,但我不知道如何以所需格式获取用户.GroupPrincipal没有属性Domain.
以下代码输出没有域的用户(例如"UserName").
using (var context = new PrincipalContext(ContextType.Machine, null))
{
using (var group = GroupPrincipal.FindByIdentity(context, IdentityType.SamAccountName, @"My Local Group"))
{
if (group != null)
{
foreach (var p in group.GetMembers(false))
{
Console.WriteLine(p.SamAccountName);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以从主要对象获取域netbios名称?如果是这样,如何获得它?
JavaScriptSerializer将从IEnumerable派生的类型序列化为JavaScript数组.它方便了数组和列表,但在某些情况下,我需要序列化在派生类型中声明的属性(例如,键入IGrouping).这里有一些示例代码:
var items = new[] { "aaabbb", "abcd", "bdsasd", "bsdqw" };
IGrouping<char, string> data = items.GroupBy(i => i[0]).First();
var serializer = new JavaScriptSerializer();
var serialized = serializer.Serialize(data);
// serialized == "[\"aaabbb\",\"abcd\"]"
// doesn't contain definition for IGrouping.Key property
Run Code Online (Sandbox Code Playgroud)
这个问题有什么简单的解决方案吗?
我试图将一些ASPX标记移植到Razor,但编译器抛出了一个错误.
ASPX(工作正常):
<% if (node.IsAccessibleToUser(Context)) { %>
// markup
<% } %>
Run Code Online (Sandbox Code Playgroud)
CSHTML(抛出错误):
@if (node.IsAccessibleToUser(Context)) {
// markup
}
Run Code Online (Sandbox Code Playgroud)
参数1:无法从'System.Web.HttpContextBase'转换为'System.Web.HttpContext'
如何HttpContext在Razor视图中获取参考?使用是正确的HttpContext.Current还是我需要以不同的方式检查站点地图节点的可见性?
如何在TextBox控件中的可见客户端区域中获取插入位置(x,y)?我需要在文本框中添加自动完成功能.
我找到了WPF的解决方案,但它无法在Silverlight中应用.
是否可以在Windows Phone 8.0 SDK(Visual Studio 2012)中使用异步内容并仍然以Windows Phone 7.1为目标?
我安装了Windows Phone 8.0 SDK并打开了我的WP7.1项目,引用了AsyncCTP nuget包.发生以下编译错误:
找不到'async'修饰符所需的所有类型.您是否针对错误的框架版本,或缺少对程序集的引用?
我不想放弃对WP7.1的支持,因此不能升级到WP8.
我对下面的标记有两个问题:
<Popup>
<Button x:Name="button"/>
</Popup>
Run Code Online (Sandbox Code Playgroud)
VisualTreeHelper.GetParent(button)返回null?Popup的UIElement?.NET Framework 4引入了新的辅助方法Stream.CopyTo.它使用读/写方法,不需要访问流的任何内部成员.它不是虚拟的,你无法覆盖它.
所以我的问题是为什么Stream.CopyTo是一个实例方法?它可以很容易地作为扩展实现.这是因为Stream是一个抽象类而不是接口吗?
它不会引起任何问题,只是有趣:)
c# ×2
silverlight ×2
.net ×1
.net-4.0 ×1
asp.net ×1
async-await ×1
async-ctp ×1
events ×1
javascript ×1
json ×1
popup ×1
razor ×1
uielement ×1