C#初级知识点整理及VS的简单使用
C#预处理器指令
#define #undef 声明一个不需赋值的变量
注意的一点事它必须放到using 上面,如
#define TEST
using System.xxx;
public class Task
{
public Task()
{
}
}
#region #endregion
这是一组用来帮助管理代码布局的指令
#if #else #elif #endif
if else 没什么好说的。不过这个一般要跟#define搭配使用
#warn #error
输出警告或错误
#if DEBUG
#endif
这个比较有用,指定了一个只在调试的时候才执行的代码块,发布的时候会被自动删除
当然 这些功能都可以用一组快捷键来实现: CTRL + K ,CTRL + S
选中一段代码然后使用这组快捷键就可以

ref参数
当把一个参数传给一个方法的时候,如果这个参数是传送的值,那么无论在方法中它被如何更改都不会影响方法外的原值;但如果加上ref的话,这个值就会被作为引用传递
static void Reset(ref int b)
{
b = ;
} static void Main(string[] args)
{
int n = ;
Reset(ref n);
}
注意的是,定义和使用方法的时候,形参和实参前都要加ref;
可选参数
有的时候某些参数是可选的,并且有默认值。(有点像重载)
static void Reset(int b,int c = ,int d=)
{
Console.WriteLine("n:{0}", b+c+d);
} static void Main(string[] args)
{
Reset();
}
但要注意的是可选参数必须放到最后定义。下面这样是不对的
static void Reset(int c = ,int d=,int b)
{
Console.WriteLine("n:{0}", b+c+d);
}
调用的时候 是按顺序赋值。
Reset();//给b赋值
Reset(,);//给b,c赋值
Reset(,,);//给b,c,d赋值
但如果不想按顺序赋值,或者有些参数不想赋值则可以用以下方式调用
Reset(,d:);//给b,d赋值
类
属性的概念
public class Person
{
private string name; public string Name
{
set
{
name = value;
}
get
{
return name;
}
}
}
如果不添加set访问器的话,就成了只读属性。(相应的也有只写属性)
public class Person
{
private string name;
public string Name
{
get
{
return name;
}
}
}
这还有种简单的写法
public class Person
{
public string Name{set;get;}
}
但这种自动实现的属性必须有两个访问器。否则会出错,如下面这样
public class Person
{
public string Name{get;}
}
如果想设置只读的话,可以通过改变访问权限的方式实现:
public class Person
{
public string Name
{
private set;
get;
}
}
继承
①在C#中 子类调用父类要用base,如
public class Student:Person
{
public override void ShowName()
{
base.ShowName();
}
}
这就如同Java中的super一样。
②对于父类的方法,如果想将来可以被覆盖的话,必须显式的将函数声明为virtual,而子类覆盖该方法的时候也必须声明为override。这是因为在C#中方法默认都是虚方法。这跟Java是截然不同的。
③抽象类
如果某个类是抽象的话,那么该类中的方法也都必须是抽象的;相反,如果某个方法是抽象的话,该类也必须是抽象类。
这个抽象关键字与Java中相同,都是abstract。注意的是抽象方法声明为abstract而不能加virtual。
④密封类
将类声明为sealed意味着该类无法被其他类所继承。这个的用处参照类string
⑤关键字internal
带有internal的类或属性方法只有在同一个程序集(命名空间)下的程序才能获得,等同于Java下的default。
VS2010中比较有用的快捷键
- 定位搜索
编辑(Edit)菜单中选择“Navigate To”(定位到) 或者通过Ctrl+, 打开定位搜索窗口。在搜索栏(模糊查询的功能很强)中输入查询内容,VS2010 将列出相关结果信息。
双击搜索结果可到达代码位置。
- 调用层次结构
在方法、属性、构造函数上点击鼠标右键可查看调用层次结构,如果是刚接手的项目就可以用这个方法了解其相关程序结构。
- 查看引用情况
Ctrl + K + R 可查看方法、属性、构造函数的引用情况,代码重构和了解代码结构的利器
VS的WCF测试工具
路径 Microsoft Visual Studio XX.0\Common7\IDE\WcfTestClient.exe
还有一个第三方的服务测试工具 SoapUI 用法类似
页面错误事件监听
网页出错误再说难免,后台错误处理不够谨慎,数据格式判断不够全面,都有可能出现。但是这些东西不能让用户看到,即使是拿个委婉点的Sorry Page来糊弄也可以。
为了解决这个问题,我们可以覆盖Page的OnError事件(当后台处错误的时候都会进入该事件),并作出相应处理 一般是跳转到某个指定页面
protected override void OnError(EventArgs e)
{
Response.Redirect("Sorry.htm");
}
C#初级知识点整理及VS的简单使用的更多相关文章
- 2019.10.15 CSP初赛知识点整理
初赛需要的知识点整理如下: (1)计算机的硬件组成与基本常识 (2)单位/进制的转换 (3)进制/逻辑运算相关 (4)概率与期望 (5)排序的各种性质 (6)简单数据结构的使用(栈.队列.链表等) ( ...
- web前端面试知识点整理
一.HTML5新特性 本地存储 webStorage websocket webworkers新增地理位置等API对css3的支持canvas多媒体标签新增表单元素类型结构标签:header nav ...
- ACM个人零散知识点整理
ACM个人零散知识点整理 杂项: 1.输入输出外挂 //读入优化 int 整数 inline int read(){ int x=0,f=1; char ch=getchar(); while(ch& ...
- Android 零散知识点整理
Android 零散知识点整理 为什么Android的更新试图操作必须在主线程中进行? 这是因为Android系统中的视图组件并不是线程安全的.通常应该让主线程负责创建.显示和更新UI,启动子线程,停 ...
- vue前端面试题知识点整理
vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...
- kafka知识点整理总结
kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...
- JSP页面开发知识点整理
刚学JSP页面开发,把知识点整理一下. ----------------------------------------------------------------------- JSP语法htt ...
- JS知识点整理(二)
前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...
- css入门知识点整理
css入门知识点整理 不要嘲笑我这个蒟蒻..例子来源:w3school css其实就分为两个东西,一个是选择器,另外一个是声明.声明定义了某个对象的属性的值,这都是html的内容.重点要关注的是选择器 ...
随机推荐
- EPANET中读取INPUT文件的函数文件——INPUT1.C/INPUT2.C/INPUT3.C
首先介绍下这3个文件的关系:可以说INPUT1.C的函数粒度最大,它的函数getdata()就完成了整个INPUT文件数据的读入,该函数又调用了INPUT2.C中的部分函数,INPUT2.C文件中的函 ...
- 【转】SAPI中的IspeechRecoContext(接口)
IspeechRecoContext自动化接口定义一个识别上下文. 什么是一个识别上下文? 一个识别上下文就是应用程序和SAPI共同作用来实现语音识别的最主要方法.它就是用来允许应用程序来开始.停止识 ...
- 参数嗅探(Parameter Sniffing)(2/2)
在参数嗅探(Parameter Sniffing)(1/2)里,我介绍了SQL Server里参数嗅探的基本概念和背后的问题.如你所见,当缓存的计划被SQL Server盲目重用时,会带来严重的性能问 ...
- 《精通Linux内核必会的75个绝技》知识杂记
http://www.ibm.com/developerworks/cn/linux/l-cn-utrace/ utrace是为运行态的进程提供trace和debug支持. utrace能做如下事情: ...
- [Bootstrap]7天深入Bootstrap(4)CSS组件
Bootstrap框架的三大核心之二:组件. 组件也是最核心的地方,因为绝大部分的网页都必须利用组件才能构建出绚丽的页面. 组件包括:Icon图标(Glyphicon). 下拉菜单(Dropdown) ...
- .net中WebService的使用实例
一.创建一个Webwebservice 1.新建一个项目WebserverDemo 2.在项目处添加新建项,添加一个web服务 3.编辑TestServer.asmx文件 3.1 TestServer ...
- Python基础:元类
一.概述 二.经典阐述 三.核心总结 1.类的创建过程 2.元类的使用惯例 四.简单案例 1.默认行为 2.使用元类 五.实践为王 一.概述 Python虽然是多范式的编程语言,但它的数据模型却是 纯 ...
- php表单中如何获取单选按钮与复选按钮的值
php代码中获取表单中单选按钮的值:(单选按钮只能让我们选择一个,这里有一个"checked"属性,这是用来默认选取的,我们每次刷新我们的页面时就默认为这个值.) 例:<fo ...
- mysql命令行备份数据库
MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:pass 数据库名称:myweb 备份数据库到D盘跟目录 mysq ...
- 使用Jsoup解析html网页
一. JSOUP简介 在以往用java来处理解析HTML文档或者片段时,我们通常会采用htmlparser(http://htmlparser.sourceforge.net/)这个开源类库.现在 ...