c# js 的几个语法写法
(1)如果o为null或undefined,则将o初始化空对象
js这样写 o = o || {};
表示,判断o是否为null或undefined,如果是,则使用{},即为一个空对象
,应用是,如 o 作为一个函数参数传入时,就先检查下和赋值一下,以便后面处理
(2)同样c#,也有类型的写法,(当然,c#是强语言,不像js弱语言那么可以随意切换数据类型)
s1 = s1 ?? "";
即表示,如果 s1 (字符串),如果为空,则使用 空串,
(3)c#还有一种最近看到的语法写法,?.,,表示空传播符,好像是.net 6以上版本使用的,,
例://参考, http://blog.csdn.net/lt045508/article/details/68921169
if ((gcList.DataSource as DataTable)?.GetChanges() != null)
{
//Do some thing
}
注意上面的问题,如果gcList.DataSource是null的话,直接调用GetChanges()方法会异常,加上问号则为空时不再执行后面的方法。
//按此说法应该是,如果,(gcList.DataSource as DataTable)为空,则这个判断就是 (gcList.DataSource as DataTable) !=null,不为空,则为 (gcList.DataSource as DataTable).GetChanges() != null
(4),c#,aspx页写匿名返回字符串的函数(匿名委托类型函数?名字很古怪,叫不来)
写法像这样,
<%=new Func<string>( ()=> { return "123123"; })()%>
说明,new Func<string>()是返回string的函数,的委托(即是返回string的函数的匿名委托---new定义出来的实例),
()=> { return "123123"; } ,表示无参数函数体,返回字符串,//但这一段,好像编译器,认为它是表达式,和委托比,这概念常我也会晕,需注意
最后的(),表示执行,这个委托类型的实例,,,
所以 <div>我的函数结果:<%=new Func<string>( ()=> { return "123123"; })()%></div>
的结果就是:
我的函数结果:123123
//这样的写法,接近js的,(function(){ ... })(); ,虽然永远也没办法那么简洁,但作为强语言,还是可以灵活一下的,
(5),c#,属性,的简洁写法,
在早前的一段时间里,写对象类型的属性,需要
long _par1=0;
public long Par1{ get{return _par1;} set{ _par1= value;} }
后来已经可以这样写了,,
public long Par1{ get; set;}=0;
也就不需要私有变量了,
但是有同学可能会想,这个变量,还是希望可以做到私有变更,公有访问,那也是有办法的,//get,set还可以支持修饰符的
public long Par1{ get; private set;}=0;
写习惯了这种语法,回头看那些,感觉还真糟,