C#学习历程(七)[基础知识]
---恢复内容开始---
》》接受用户输入的整数
Console.readline();接受键盘输入的字符串,如果需要接受整数并输出,则需要字符串的转换。
一般建议使用Covert类中的方法。比如整数Convert.ToInt32(str);小数Convert.ToDouble(str);
(但是如果字符串不为数字的话就会报错)
》》数据转换
显式转换,当大类型数据(大盒子)向小类型数据(小盒子)转换时,需要进行显式转换反之则是系统自动隐式转换。
可以直接在前面加(类型),例如byte mybyte = (byte)myint。
也可以使用Convert对应的方法进行转换。(这个就要注意类型转换不匹配造成的错误)
》》复杂的变量类型
枚举
枚举是某类型的取值范围。
先定义枚举类型,再声明此枚举类型的声明,再进行对应的赋值。
而且枚举类型的定义一般是在namespace下面的,当然class下面也可以。
比如:
enum GameState
/*在名称后面加上“:byte”可以修改枚举的默认类型,默认是int,可节约内存*/
{
Pause;
Failed;
Success;
Start;
/*默认是0开始,第一个修改,后面也是依次递增(若用整型数字表示,要记得使用显式转换)*/
/*定义四种游戏的状态*/
/*可以使用“=”来自行改变默认值*/
}
GameState state = GameState.start;
int num = (int)state;
/*声明一个变量state*/
/*然后使用声明的变量,来进行接下来的代码编写*/
结构体
几个类型的集合。
结构体的定义同样一般写在namespace下面。
struct Position{ int x = 3;
int y;
int z;
}
Position realPosition;
realPosition.x = 3;
/*多个变量(类型)的集合*/
/*当时使用结构体声明变量的时候,此变量就包含结构体中的所有变量*/
/*然后直接使用“.变量名”直接使用,使数据更加的清晰*/
数组
数组前面已经谢过了,具体的定义和使用方法,就此略过。
》》函数中的参数数组
static int plus(params int[] array)//params 表示是一个int型的【参数数组】
{
int sum= 0;
for(int i = 0; i<array.Length;i++) {
sum += array[i]
}
return sum; } static int plus(int[] array)//参数是一个未定义大小的【数组】
{
int sum= 0;
for(int i = 0; i<array.Length;i++) {
sum += array[i]
}
return sum;
} /*****在main函数中调用的时候*******/ int sum1 = plus(33,22,11,44,55,77)
/*自己输入任意符合类型的数字,编译器自动根据输入,组合成一个数组*/ int sum2 = plus(new int[]{33,55,44,22,11})
/*需要手动定义一个数组,且参数固定,无法像参数数组一样更改*/
》》委托的特点
委托的使用分两步:
先定义
然后声明(变量)
其中枚举,结构体的使用都分为定义和声明。而整数类型,字符串类型,数组类型的定义已经在CLR中完成,直接声明即可。
类型的定义放在namespace下方。
委托的定义类似一个没有函数体的函数,且定义委托需要delegate关键字。
namespace _053_委托的使用 {
public delegate double MyDelegate(double param1, double param2);
class Program {
static double Multiply(double param1, double param2)
{
return param1/param2;
}
static void Main(string[] args)
{
MyDelegate de;//利用我们定义的委托类型声明了一个新的变量
de = Multiply;//当我们给一个委托的变量赋值的时候,返回值跟参数列表必须一样,否则无法赋值
Console.WriteLine(de(2.0, 34.1));
Console.ReadKey();
}
}
}
- 委托类似于 C++ 函数指针,但它们是类型安全的。
- 委托允许将方法作为参数进行传递--》允许将方法带入另一个方法。
- 委托可用于定义回调方法。
- 委托可以链接在一起;例如,可以对一个事件调用多个方法。
- 方法不必与委托签名完全匹配。
- 事件就是一种特殊的委托。
字段总结:
Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型
Func可以接受0个至16个传入参数,必须具有返回值
Action可以接受0个至16个传入参数,无返回值
Predicate只能接受一个传入参数,返回值为bool类型
所有的委托(Delegate)都派生自 System.Delegate 类。
一旦声明了委托类型,委托对象必须使用 new 关键字来创建,且与一个特定的方法有关。(??)
》》重写和重载
1、父类中有方法a,添加virtua修饰符可声明为虚方法,在子类中可以用override声明后重写方法a。【重写】
2、父类中有方法a,在子类中可以有new修饰符声明后隐藏父类方法。【重载】
3、类中有方法a(int int),以及b(string string),根据后面调用方法时参数的不同,则对应的方法也不同。【重载】
子类重写方法后,对于子类的任何实例,父类的原方法a都已经不存在。
子类隐藏父类方法后,父类的原方法仍然存在,当子类的实例的类型转为父类时,调用的方法a即为原来的方法。
C#学习历程(七)[基础知识]的更多相关文章
- 如何学习FPGA?FPGA学习必备的基础知识
如何学习FPGA?FPGA学习必备的基础知识 时间:2013-08-12 来源:eepw 作者: 关键字:FPGA 基础知识 FPGA已成为现今的技术热点之一,无论学生还是工程师都希望 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- Quartz学习笔记:基础知识
Quartz学习笔记:基础知识 引入Quartz 关于任务调度 关于任务调度,Java.util.Timer是最简单的一种实现任务调度的方法,简单的使用如下: import java.util.Tim ...
- python核心编程学习记录之基础知识
虽然对python的基础知识有所了解,但是为了更深入的学习,要对python的各种经典书籍进行学习 第一章介绍python的优缺点,略过 第二章介绍python起步,第三章介绍python基础,仅记录 ...
- Ternsorflow 学习:002-Tensorflow 基础知识
前言: 使用 TensorFlow 之前你需要了解关于 TensorFlow 的以下基础知识: 使用图(graphs) 来表示计算 在会话(session) 中执行图 使用张量(tensors) 来代 ...
- Docker的学习笔记(一)基础知识
概述 本人最近在学习docker相关的知识,既是工作本身的需要也是自己对技术的追求的必要,以后我也会推出容器相关的随笔,既可以增长自己的知识,也可以和读者广泛交流,岂不乐乎?话不多说.第一篇先介绍do ...
- Java学习1——计算机基础知识
本文包含了一些计算机基础知识:计算机组成:Windows常用快捷键:DOS常用命令:计算机语言发展史.
随机推荐
- 【android】activity、fragment传值例子
1:Activity篇 1.1向Activity传值 关键点在于putExtra.如果传递类的话,记得类实现Serializable接口 Intent intent = new Intent(Firs ...
- C# DateTime 获取时间方法,网上收集
DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays( - Convert.ToInt32(dt.DayOfWeek.T ...
- 877. Stone Game
问题 有偶数堆石头(数组长度为偶数),每堆石头有一些石头(数组元素为正),石头的总数是奇数.Alex和Lee两个人轮流取石头堆,每次可以从头部或尾部取,Alex先取. 给定这样一个数组,两人都以最优策 ...
- python 利用正则构建一个计算器
该计算器主要分为四个模块: weclome_func函数用来进入界面获取表达式,并判断表达式是否正确,然后返回表达式: add_sub函数用来进行加减运算,如果有多个加减运算,会递归,最后返回对应的值 ...
- a=b=c 连等赋值的分析
首先 先抛出两个例子,大家想想结果是什么? eg1: var a = 1; var b = a; a.x = a = 3; 问 a = ? | b = ? | a.x = ? eg2: var ...
- 使用sql语句创建 表空间 和用户,以及如何彻底删除表空间和用户,使用命令导出和导出数据库
创建表空间有很多种方式,在安装好oracle 11g 后在网站上 https://localhost:1158/em 手动创建也可以,但是没有sql直接生成方便,下面介绍下如何用sql语句直接生成表空 ...
- 国光大力推荐(安利)Deepin15.4
简介 深度操作系统15.4 Beta(deepin15.4)相比deepin15.3来看,外观上要更加优雅.现在还在内测中,相信不就官网就会发布正式版.小子昨天下午删了我的windows10,特意来尝 ...
- DNS ARP地址解析原理
ARP是地址解析协议 主机A与主机B之间如果要进行数据间的传输,需要获取对方的IP与物理地址(MAC),在只清楚ip的情况下,主机A向主机B请求链接,会先查找ARP高速缓存表,是否存在对应的主机B的i ...
- Ubuntu 设置为固定ip
vmware设置为桥接模式 使用root登陆ubuntu 使用gedit打开/etc/network/interfaces auto lo iface lo inet loopback auto en ...
- HA-web-services
一.HA部署 本次实验的程序选型为heartbeat v1 + hearesources.资源有IP和httpd,filesystem 配置HA集群的前提: (1)各节点资源一致,硬件或软件环境一致 ...