在网上复制代码时,烦人的是,每一行前面都有行号。
行数少的话,一个一个删也没多大问题,但是如果有上百行的话,咋办?
写个程序/脚本搞定吗?
其实,可以用Visual Studio自带的“Block Selection”功能,可以轻松搞定!
按住Alt键,用鼠标拖出一个矩形;
按一下Del键,行号就不见了;
使用它的另外一个场景是,写完一个类后,发现每一行都少了public。
到适当的位置,按住Alt键,用鼠标拖一个矩形;
输入public,会自动在每一行,都输入public;
最后,按Ctrl+K+D调整一下缩进,就搞定了。
注意:var与dynamic这两个关键字,只是看起来很相似,仅此而已!
var表示“变量的类型是在编译时决定的”,但是dynamic表示“变量的类型是在运行时决定的”。因此,dynamic与var具有截然不同的含义。
var让你在初始化变量时少输入一些字,编译器会根据右值来推断出变量的类型。dynamic更厉害,它告诉编译器,根本就别理究竟是啥类型,运行时再推断不迟。
var只能用于局部变量的定义,你不能把类的属性定义成 var,也不能把方法的返回值类型或者是参数类型定义成var。dynamic就没有这些局限了。
dynamic类型并没有跳过类型校验,只是延迟到了运行时。如果在运行时,检测到类型不兼容,照样会抛出异常。
你可能在以下情况下使用dynamic:
1.COM对象
2.动态语言(如IronPython,IronRuby等)对象
3.反射对象
4.C# 4.0中动态创建的对象
问题:
请把“0,1,2,3...9”的顺序打乱。
回答:
//C#
System.Random rnd = new System.Random();
IEnumerable<int> numbers = Enumerable.Range(0, 10).OrderBy(r => rnd.Next());
//F#
let rnd = new System.Random()
[0..9] |> List.sortBy (fun x -> rnd.Next())
思考:
函数式编程思想很重要!
反馈:
很希望听到大家的声音,欢迎讨论!