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;

写习惯了这种语法,回头看那些,感觉还真糟,

 

posted @ 2017-12-08 11:25  以函  阅读(214)  评论(0编辑  收藏  举报