数据类型分为:值类型和引用类型

值类型:byte、short/char、int、long、float、double、decimal、enum、struct

引用类型:string、object、interface、delegate、array

值类型是传递值,引用类型是传递地址

两个相同值的变量,改变其中一个,另一个不受影响

两个相同地址的变量,改变其中一个,另一个也会跟着改变

object.ReferenceEquals(a,b) //判断是否是同一对象、地址

从大向小转换时需要强制转换,从小向大转换系统会自动进行隐性转换

所有的赋值和运算操作都会触发自动转换

隐性转换永远是小的类型转为大的类型

char转为int会变为ASCII码,反之ASCII码也可以转化为char类型

注:ASCII码是一种和字母、符号对应的数字,即用数字表示字母、符号

如果两个相同类型之间进行运算,不会触发自动转换

如:3/5会得出0 因为3和5都是int,结果依然保持int类型,不会自动转为double

char和short虽然大小相同,但是范围不同,所以两个类型无法互相赋值

char是从0到65535 short是从-32768到32767

有些类型在赋值时要带指定的符号

decimal M

float       f

long       L

例如:

decimal d = 3.14M

枚举是一组有限的值

枚举相对于数据类型可读性要高,又比字符串性能高

枚举一般用于表示性别,民族,地区之类不会变动的数据,经常变动的数据则不推荐使用枚举

五个访问修饰符的访问范围

private  本类中可用

protected   子类和本类中可用

public         任何地方都可用

internal       当前程序集中可用

protected internal   子类或者当前程序集的所有类中可用

访问修饰符的作用:限制访问,调用时是否有权利使用

类的默认访问修饰符是 internal 成员变量的默认访问修饰符是 private

属性是对字段的一种封装,通过get set方法保证字段的数据有效性

get set的本质就是两个方法,get在取值时触发,set在赋值时触发

public void id_set(int value)
{
id = value;
} public int id_get(int value)
{
return value;
}
public int Id {get=>id,set=>id=value};//属性还可以用lambda表达式书写(不建议使用)
public int Id {get;set;} = ;//可以这样直接赋值

占位符 string.format

string a = "hello";
string b = "world"; Console.WriteLine(String.Format("{0},{1}!",a,b));

输出一段有很多变量的语句时,不断的拼接变量非常麻烦,这时可以通过使用string.format,用占位符解决

还有更方便的写法

Console.WriteLine($"{a},{b}!");

但是仅高版本VS才能使用

构造函数用于类的初始化

构造函数的访问修饰符可以和类的不同

构造函数的参数可以设置默认值,设置了默认值的参数为选填,没设置默认值的参数为必填

有构造函数后,如果要new这个类的对象,就必须给他构造函数上相应的参数

public class Class1
{
int a;
public Class1(int a)
{
this.a = a; //构造参数和类的成员变量冲突时,用过this区分
}
} Class1 a = new Class1(); //给它对应的int a的值

如果不给的话就会报错

 public class Class1
{
int a;
public Class1(int a = )
{
this.a = a;
}
} Class1 a = new Class1();//有默认值的参数为选填,即使不给也不会报错

不只是构造函数,方法的参数也可以这样设置默认值

 public void show(string a = "hello")
{
Console.WriteLine(a+"world");
}

代码重构:有部分相同代码时,直接用之前的代码

public Student(int id,string name='XXX')//为学生类初始化id和name
{
this.Id = id;
} public Student(int id,string name='XXX',string address):this(id,name)//初始化id和name操作和上面一样,但是多了一个地址,所以可以直接用上面的构造完成相同的操作
{
this.Address = address;
}
//定义方法时同样可以使用
public int add(int num1,int num2)
{
return num1 + num2;
}
public int add(int num1,int num2,int num3)
{
return add(num1,num2)+num3;
}
throw new ArgumentException("");//自定义一个错误

索引器

索引器可以让对象以集合的方式赋值和取值

public class Test
{
//01.首先定义一个数组
private string[] name=new string[]; //02.根据创建索引器的语法定义一个索引器,给name数组赋值和取值
public string this[int index]
{
get { return name[index]; }
set { name[index] = value; }
} } static void Main(string[] args)
{
//01.首先你得实例化Test类的对象
Test test=new Test();
//02.利用索引器给Test类中的数组赋值
test[] = "张总";
test[] = "吴总";
//03.打印查看效果
for (int i = ; i < ; i++)
{
Console.WriteLine(test[i]);
}
Console.ReadLine();
}

索引器的本质就是属性

C# 基础复习 一 数据类型的更多相关文章

  1. ndk学习之C语言基础复习----基本数据类型、数组

    关于NDK这个分类在N年前就已经创建了,但是一直木有系统的记录其学习过程,当然也没真正学会NDK的技术真谛,所以一直也是自己的一个遗憾,而如今对于Android程序员的要求也是越来越高,对于NDK也是 ...

  2. python基础复习-1-2 数据类型-str、list、tuple、dict

    数据类型 数字 引号: 123 数值 '123' 字符串 整数:ini long 范围:(-2**31 - 2**31) num = 123 长整型 long (L) num = 123L 浮点型:f ...

  3. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  4. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  5. C语言基础复习总结

    C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...

  6. JS基础 复习: Javascript的书写位置

    爱创课堂JS基础 复习: Javascript的书写位置复习 js书写位置:body标签的最底部.实际工作中使用书写在head标签内一对script标签里.alert()弹出框.console.log ...

  7. MySQL学习笔记_8_SQL语言基础复习

    SQL语言基础复习 一.概述 SQL语句注释方式 1)以"#"开头直到行尾的所有内容都是注释 2)以"--"(--后还有一个空格)开头直到行尾的所有内容都是注释 ...

  8. JS基础复习

      js基础语法     Netcape        js基础语法规范(ECMAScript1,2,3,3.1,5(IE9),6   ES    ES6=es2015) DOM BOM       ...

  9. 《Java基础复习》-控制执行流程

    最近任务太多了,肝哭我了,boom 参考书目:Thinking in Java <Java基础复习>-控制执行流程 Java使用了C的所有流程控制语句 涉及关键字:if-else.whil ...

随机推荐

  1. NTP学习路线

    NTP了解路线 基础 ntp配置中的tinker参数? ntp的同步方式slew step的区别? restrict含义?restrict -6 default ignore含义? fudge 127 ...

  2. LCIS 最长公共上升子序列问题DP算法及优化

    一. 知识简介 学习 LCIS 的预备知识: 动态规划基本思想, LCS, LIS 经典问题:给出有 n 个元素的数组 a[] , m 个元素的数组 b[] ,求出它们的最长上升公共子序列的长度. 例 ...

  3. Project Euler 11 Largest product in a grid

    题意:在这个20×20方阵中,四个在同一方向(从下至上.从上至下.从右至左.从左至右或者对角线)上相邻的数的乘积最大是多少? 思路:暴力去枚举以 ( x , y ) 为中心拓展的四个方向 /***** ...

  4. [SDOI2016]生成魔咒(后缀自动机)

    看一眼题.本质不同的字串数. 嘴角微微上扬. 每一次加一个数输出一个答案. 笑容渐渐消失. 等等,\(SAM\)好像也可以求本质不同的字串. 设当前字符串用\(x\)表示,每次插入完成后\(ans\) ...

  5. 洛谷P1567 统计天数

    题目背景 统计天数 题目描述 炎热的夏日,KC非常的不爽.他宁可忍受北极的寒冷,也不愿忍受厦门的夏天.最近,他开始研究天气的变化.他希望用研究的结果预测未来的天气. 经历千辛万苦,他收集了连续N(1& ...

  6. jquery 去重

    var yearArray = new Array(2009, 2009, 2010, 2010, 2009, 2010); $.unique(yearArray); alert(yearArray) ...

  7. Django入门--模板变量、过滤器及静态文件

    一.模板变量 我们登录页面后,在页面上会显示姓名等信息,姓名就是模板变量,用来显示登陆者的名字,Django对这些数据进行处理后,返回给前端页面,前端页面进行渲染. 1.模板变量语法规则 1)在htm ...

  8. 0111MySQL优化的奇技淫巧之STRAIGHT_JOIN

    转自博客http://huoding.com/2013/06/04/261 问题 通过「SHOW FULL PROCESSLIST」语句很容易就能查到问题SQL,如下: SELECT post.* F ...

  9. 洛谷 P1272 重建道路(树形DP)

    P1272 重建道路 题目描述 一场可怕的地震后,人们用N个牲口棚(1≤N≤150,编号1..N)重建了农夫John的牧场.由于人们没有时间建设多余的道路,所以现在从一个牲口棚到另一个牲口棚的道路是惟 ...

  10. [HTML5] Accessibility Implementation for complex component

    When you developing a complex component by your own, one thing you cannot ignore is Accessibility. C ...