C#中有类似Javascript的void
运算符吗?
Javascript的void
,“评估表达式并丢弃结果,返回undefined
”。因此,我正在寻找内置的“评估”并返回null
,或者可能是默认类型。 (所以它应该类似于null-coalescing ??
运算符的反转。)
使用示例:
Person a;
public void main() {
var x = void(a = new Person());
// x should contain null
}
class Person { }
(由于非法使用关键字“void”,示例无法编译,自然。)
我目前正在使用它 - 这有效 - 但感觉很狡猾:
protected object voided(object ob) {
return null;
}
编辑。好的,所以我肯定需要添加更多细节。我在ASP.NET代码中使用内联DataBind表达式中的代码。 E.g:
<asp:Repeater runat="server">
<ItemTemplate>
</tr><%# voided(globalPersonVariable = (Person)Container.DataItem)) %></tr>
</ItemTemplate>
</asp:Repeater>
遗憾的是,使用default
不适用于此
(我第一次没有包含这些附加信息,因为我想保持它是一个“纯粹的”C#-question,而不是ASP.NET。)
答案 0 :(得分:4)
你正在寻找这样的东西吗?
var x = default(Person) // null
var i = default(int) // 0
答案 1 :(得分:2)
你可以制作一个扩展方法,Voided()
public static object Voided<TType>(this TType tThis)
{
return null;
}
然后你可以这样称呼它:
(globalPersonVariable = (Person)Container.DataItem)).Voided()
如果您想将此与其他人提到的默认内容相结合,则会更改为:
public static TType Voided<TType>(this TType tThis)
{
return default(TType);
}
答案 2 :(得分:1)
不确定void
函数在javascript中的功能,但要获取类型的默认值,请使用default
关键字:
protected T voided<T>(T obj) {
return default(T);
}
答案 3 :(得分:0)
您可以使用default
关键字:
http://msdn.microsoft.com/en-us/library/xwth0h0d(v=vs.80).aspx
答案 4 :(得分:0)
我只想将这两个片段放入混音中。 两者都有效,但他们仍然觉得比必要的更冗长。
(globalPersonVariable = (Person)(Container.DataItem)) == null ? null : null
((Func<object,object>)(x => null))(globalPersonVariable = (Person)(Container.DataItem))
对于数据绑定目的,您还可以发出空字符串:
(globalPersonVariable = (Person)(Container.DataItem)) == null ? "" : ""
这种区别可能看起来微不足道,但这可以使您免于需要施放 在某些情况下的空值。