C#,一些非常简单但应该知道的知识点

1.本地变量

一看这个标题你可能会一愣,这是个什么东东。看个小例子:

static void main()
{
   int a=10;
   MyClass mc=new MyClass();
}

呵呵,这里的a与mc就是本地变量,它和字段一样,也保存数据。字段通常保存和对象状态有关的数据,而创建本地变量经常用于保存本地或临时数据。呵呵,简单吧,但是它和实例字段有何区别:

 
实例字段


本地变量

生存期 从实例创建开始,直到实例不再被访问 从它在块中被声明开始,到块执行结束
隐式初始化 初始化成该类的默认值 没有隐式初始化。如果变量在使用之前没有被赋值,编译器将报错
存储区域 由于实例字段是类的成员,所有的字段都存储在堆里,无论它是指类型还是引用类型 值类型:存储在栈里
引用类型:引用存储在栈里,数据存放在堆里

2.var 关键字

我们知道var可以自动推断变量的类型,如上代码,我们可以发现在声明开始部分提供类型名时,编译器能从初始化语句的右边推断出来它的类型,所以,在声明的开始部分包括显示的类型名多余的。

为了避免这种多余,可以在声明的开始部分的显示类型名的位置使用新的关键字var。上面代码可以改成:

static void main()
{
   var a=10;
   var mc=new MyClass();
}

3.值参数

使用值参数,通过将实参的值复制到形参的方式把数据传递给方法。方法被调用时,系统做如下操作:

    • 在栈中为形参分配空间
    • 将实参的值复制给形参

4.引用参数(ref)

    • 不会为形参在栈上分配内存
    • 实际情况是,形参的参数名将作为实参变量的别名,指向相同的内存位置
    • 实参必须是变量,在用作实参前必须被赋值。如果是引用类型变量,可以赋值一个引用或者null

5.输出参数(out)

    • 在方法内部,输出参数在能够使用之前必须被赋值。这就意味着参数的初始值是不起作用的,所以没有必要在方法调用前为参数赋值。
    • 在方法返回之前,方法内部任何路径都必须为所有输出参数进行一次赋值。
      如下代码:

public void Add(out int outValue) { int var1=outValue+2; }上述代码输出参数在方法赋值之前被读取将会报错。

6.属性(set,get)

    • 属性是一个函数成员
    • 它不为数据的存储分配内存
    • 它可以执行代码
    • set访问器拥有一个单独的隐式的值参,名称为Value,与属性的类型相同且拥有一个返回类型void
    • get访问器没有参数,拥有一个与属性类型相同的返回类型。

7.对象初始化语句

我们都知道创建一个对象是由new 后面跟着一个类构造函数及其参数列表组成。

对象初始化语句扩展了创建语法,在表达式的尾部放置了一组成员初始化的语句。允许我们创建新的对象实例时,设置字段和属性的值。

该语法有两种形式:一种形式是包括构造函数的参数列表,另一种是不包括。注意第一种形式可以省略圆括号。

new  TypeName      {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}

new  TypeName      {FieldOrProp=InitExpr,FieldOrProp=InitExpr,…}

示例如下:

public static void main()

{

Point p1=new Point();

Point p2=new Point{X=4,Y=5,Z=6};

Point p3=new Point(9){X=7,Y=8};

}

public class Point

{

public int X=1;

public int Y=2;

public int Z=3;

public Point(int z) { Z=z; }

}

 

8.this关键字

this关键字在类中使用,是对当前实例的引用。它只能用在下列类成员的代码中

  • 实例构造函数
  • 实例方法
  • 属性和索引器的实例访问权
    由于静态成员不是实例的一部分,所以不能在任何静态函数成员的代码中使用this关键字。更适当的说,this用于下列目的:
  • 用于区分类的成员和本地变量或参数
  • 做为调用方法的实参

呵呵,上面这些内容我想大部分童鞋都能一下看懂,这都是些很基础的东西,有些可能都在不知不觉中用烂了,只是没有注意过还有个这么个东东。所以我给总结了一些供大家参考,希望大家能有所收获。

时间: 2024-10-29 19:07:43

C#,一些非常简单但应该知道的知识点的相关文章

Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点

开发一个简单的BBS论坛 项目需求: 1 整体参考“抽屉新热榜” + “虎嗅网” 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用户展示 6 允许登录用户发贴.评论.点赞 7 允许上传文件 8 帖子可被置顶 9 可进行多级评论 知识必备:(注:没有必备下面知识的同学,请返回去看会之后再看下面的内容防止蒙了~~!) 1 Django 2 HTML\CSS\JS 3 BootStrap 4 Jquery 设计表结构 1.表结构重要性 在开发任何项目的时候,设计到数据库,

web网页简单设计补充的css知识点

了解了web的基本框架,html和css,补充几点知识点常见表示颜色的几种方法:red#f00rgb(255,0,0)rgba(255,0,0,0.5) 带透明度的色彩值 opacity: 50%;透明度border-radius:圆角 border-radius:值值:a 表示四角都为相同的圆角状态值:a b 表示 左上,右下都为a,右上,左下都为b值:a b c 表示左上为a 右上和左下为b 右下为c值:a b c d 依次表示 左上 右上 右下 左下值:50% 表示圆或椭圆 cursor:

react+redux官方实例TODO从最简单的入门(5)-- 查

上一篇文章<改>实现了,最后一个功能--<查>! 这个查是稍微要复杂一点的功能,官方实现的就是一个过滤数组的效果,然后展示出来,这里有3个状态,all,completed,active. 要实现这三个状态之前,我们需要提前实现一个功能,那就是给每个展示的子组件一个可改变是completed还是active的状态的属性(方法)--- 这样才能有可查(筛选)的东西嘛 老规矩: 1.声明状态 2.actions 3.reducer 4.component 好了,看看效果 似乎还差一个,官

脚本思想及其简单的技巧

http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=7203&fromuid=4587 我通过一个简单的ping 脚本把知识点分享给大家. 先展示下这个脚本的效果 我先把我学linux之前的脚本发出来 在把之后的脚本发出来做比较 最后 解析 每个知识点 ----------------------------------------- #! /bin/bash ## look exist ip for sum in `seq 0

简单博弈论总结

简单博弈论 本次简单博弈论讲解六个知识点: 1:bash博弈:2:nim博弈:3:威佐夫博弈:4:Fibonacci博弈:5:sg函数: 首先介绍博弈论问题有如下几个特点 1:博弈模型为两人轮流决策的博弈.并且两人都使用最优策略来取得胜利. 两个玩家,都会采取最优的决策,那么如果存在一个局面为必胜局面,某玩家位于此局面.只要自己无失误,则必胜.那么同样又一个局面为必败局面,某玩家位于此局面.只要对手无失误,则必败. 那也就是说,针对这样的游戏,我们关注点应该在局面上. 2:博弈是有限的.即无论两

SpringBoot整合LayUI和Thymeleaf制作简单登录页面

前面已经学习过SpringBoot整合Thymeleaf,这次主要把上次提到的简单登录界面用博文形式写出来 记录一个小Demo的学习,如果没看过SpringBoot整合Thymeleaf可以看一下SpringBoot整合Thymeleaf(三) 先上页面效果图: Demo所涉及的知识点 1.SpringBoot请求映射 2.static和templates静态资源映射 只要简单了解这两个知识点,就可以做出简单的登录的页面 Demo所涉及的目录结构图 Demo所涉及的Pom文件的主要依赖 <dep

Linux监控工具介绍系列&mdash;&mdash;free

在Linux系统中,我们查看.监控系统内存使用情况,一般最常用的命令就是free.free命令其实非常简单,参数也非常简单,但是里面很多知识点未必你都掌握了.下面总结一下我所了解的free命令.如有不足,敬请指出.文章很多知识点参考了下面参考资料,都是在这些前辈文章的基础上所做的一个验证和总结. free命令介绍 free命令是一个显示系统中空闲和已用内存大小的工具.大多数Linux发行版都包含有free命令,但是版本可能不一样.free 命令使用/proc/meminfo中的值作为基准来显示内

[Asp.net]站点地图SiteMap

引言 在项目中发现使用站点地图的控件,之前没总结过这方面的东西,就写了一个demo测试了一下,这里记录一下,算是总结吧. Web.sitemap 1 <?xml version="1.0" encoding="utf-8" ?> 2 <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 3 <siteMapNode url=&q

HTML5学习笔记(持续更新中....)

其实平时的工作中,不知不觉我们应用了很多HTML5,但当正儿八经问起来你对HTML5了解多少,很多时候都有点懵. 做个简单的HTML5总结.包括简介.要学的知识点.凌乱的知识点 HMTL5简介 定义:html的新版本,2014年10月由W3C完成标准制定. 设计目的:在移动设备上支持多媒体. 特点:简单易学. 要学习的知识点 canvas绘画元素 可媒介回放的video和audio元素 支持离线存储 新标签:header.nav.section.article.footer 新表单控件:cale