【基础篇】C#基础知识——面向对象
【基础篇】C#基础知识——面向对象
第一章 C#基础知识——入门
第二章 C#基础知识——面向对象
文章目录
- 【基础篇】C#基础知识——面向对象
- 前言
- 一、C#面向对象的特性
- 二、命名空间
- 2.1 namespace
- 2.2 using
- 2.3 class
- 2.4 程序结构
- 2.5 类的成员
- 2.6 静态与非静态
- 2.7 举例
- 2.8 在线类库帮助
- 三、C#常用类
- 3.1 输入输出类
- 3.1.1 用Console.WriteLine输出
- 3.1.2 用Console.ReadLine输出
- 3.2 Math类
- 3.3 Random类
- 3.4 错误捕获类
- 3.5 静态与非静态
- 总结
前言
这篇主要讲C#的面向对象基础,以及一些案例
提示:以下是本篇文章正文内容,下面案例可供参考
一、C#面向对象的特性
简而言之:
编写自己的类,使用别人的类
二、命名空间
2.1 namespace
namespace就是命名空间的意思,在西交大的课程中,老师给出了个形象的例子:
你可以将命名空间理解为外国人的名字,由于他们名字太长,所以就需要命名空间来分割
例如:阿里巴巴_叽里呱啦_杨狗蛋
其中阿里巴巴可能是你爷爷奶奶辈及其以上的名字,叽里呱啦是你父母辈的名字,杨狗蛋是你的名字
如图:
这样如果你和别人说,你叫阿里巴巴_叽里呱啦_杨狗蛋,他们也就知道你的祖辈,父母叫什么了,同理在代码中也一样,你会引用这些父类。
2.2 using
由于命名空间真的太长了,真的没有人有耐心去听你的自述, 想象如果名字更长的情况下:
亚当夏娃_亚当夏娃的儿子_亚当夏娃的孙子_......._阿里巴巴_叽里呱啦_杨狗蛋!!!
想象两个人在沟通,一个人说,我叫:阿里巴巴_叽里呱啦_杨狗蛋,另一个人说,我叫:七零八碎_红枣芋泥茶_刘二狗,然后他们互相问候对方的亲戚.............
画面太美…
同理在代码中,如果你要引入一个你名字的类,那么你就要打出
阿里巴巴_叽里呱啦_杨狗蛋
夺损哪
所以这里引用了Using的概念,也就是导包
在系统内引入了阿里巴巴_叽里呱啦.etc
这样你和别人对话就可以简化自己名称了,你就可以跟被人说,你叫杨狗蛋了。
这里引入一个小案例:
本来你想输入一个hello,world
System.Console.WriteLine("Hello,World");//输出文本信息内容
现在引入System这个大类之后:
using System;
你就可以直接写:
Console.WriteLine("Hello,World");//输出文本信息内容
这样就简化了我们的开发过程
2.3 class
确认了命名空间之后,我们就为杨狗蛋创立对应的类:
类就相当于组织这个命名空间的各个部分,
例如现在为杨狗蛋建立一个body类,表示她的身体:
class Mybody{}
2.4 程序结构
using 其他命名空间
using 其他命名空间
namespace 自己的命名空间{class 自己的类{}
}
2.5 类的成员
类一般都有字段,属性,事件,方法,统称为类的成员。
- 字段,属性:表现人的特性,例如:人的身高,体重
- 事件:表示某个动作触发的事件,例如:点击窗口跳出“你好,我是XXX”(具体在第二部分涉及)
- 方法则表示提供的功能
class Mybody{/** 这些是字段* */public int Myheight; //公有:我有多高private int woyouduozhong; //私有(只能在类中自己被引用),我有多重/** 这些是方法* */public void Myinfo(){Console.WriteLine("My Height is:\n"+Myheight);}}
2.6 静态与非静态
简而言之:
静态成员可以直接引用,例如Console.ReadLine()
非静态成员需要实例化,例如:
先实例化一个Mybody类,在引用他们的一个方法Mybody.Myinfo()
2.7 举例
这里举个例子来整理之前的知识
using System;
using System.Collections.Generic;
using System.Text;
/** * 从这里不难看出,C#语言有和面向对象语言一样的基础,这里 using………………导包Namespace…………….命名空间,指向类名Static void Main(String[] args){//主程序入口}* * */
namespace HelloWorld
{class Hello{static void Main(String[] args){Mybody mybody = new Mybody();mybody.Myheight = 170;mybody.Myinfo();}}class Mybody{/** 这些是字段* */public int Myheight; //公有:我有多高private int woyouduozhong; //私有(只能在类中自己被引用),我有多重/** 这些是方法* */public void Myinfo(){Console.WriteLine("My Height is:\n"+Myheight);}}
}
运行结果:
2.8 在线类库帮助
总结:和其他语言的api文档一样,网址为:
https://docs.microsoft.com/zh-cn/previous-versions/gg145045(v=vs.110)?redirectedfrom=MSDN
感兴趣的自己去翻
三、C#常用类
3.1 输入输出类
分为输入,输出两大模块
3.1.1 用Console.WriteLine输出
(1)输入一个简单的字符串
Console.WriteLine("Welcome.....");
(2)输入变量和表达式
int age = 20; //定义我的名字Console.WriteLine(age);Console.WriteLine(age * age);//age平方
(3)拼接字符串
Console.WriteLine("My Height is:\n"+Myheight);
3.1.2 用Console.ReadLine输出
注意,Console.ReadLine默认使用的值是字符串
(1)输入字符串
String s = Console.ReadLine(); //输入一个字符串
(2)输入其他类型的
因为默认输入的值是字符串,如果需要输入其他类型的,就需要类型转换
int zhengshu1 = Convert.ToInt32(Console.ReadLine()); //输入一个整数
3.2 Math类
.Net提供了System.Math类,这个类有大量的方法相当于平常的数学函数
举例:
/*
* 输入一个数求他的10次方的开根号
*/Double Num = Convert.ToDouble(Console.ReadLine());Double logNum = Math.Log10(Num);Console.WriteLine("开10根号得到的结果:" + logNum);
3.3 Random类
Random使用的时候需要创建一个对象并实例化
举例:
Random r1 = new Random();
int x = r1.Next(10, 20); 生成一个10到19范围的double类型的随机整数
int y = r1.Next(20); //生成一个0到19范围的随机整数
double z = r1.NextDouble(); //生成一个0到1范围的double类型的随机浮点数
产生多个随机数无需多次实例化,一次实例化即可。 我们可以把r1理解为包含很多随机数的序列,Next就是取出下一个。
3.4 错误捕获类
与其他面向对象语言的错误捕获类型一致,不过多赘述
3.5 静态与非静态
以上的类为例子,可以看出:
(1)Console,Math是静态类,可以直接类名.方法的使用
(2)Random不是静态类,需要实例化后使用
具体的类的静态/非静态可以参考msdn中的文档
总结
(1)作为初学者,比较容易混淆的是命名空间和类的概念,
(2)对于属性和字段,先阶段先避而不谈,等谈到对应知识的时候再解释。
(3)C#的语言特性个人觉得是介于JAVA和C之间的,输入和C语言的很像,只能通过类型转换,但一些面向对象的思想以及其他的方面,还是和JAVA很像的
【基础篇】C#基础知识——面向对象相关推荐
- java基础篇_java基础篇1
JAVA基础篇1 注释 单行注释 //这是一个单行注释,由两个斜杠组成,不能嵌套多行注释 多行注释 /*这是一个 多行注释 ,//里面不能嵌套多行注释, 但是可以嵌套单行注释*/ 文档注释 /**ja ...
- 【谷粒商城基础篇】基础环境搭建
谷粒商城笔记合集 分布式基础篇 分布式高级篇 高可用集群篇 ===简介&环境搭建=== 项目简介与分布式概念(第一.二章) 基础环境搭建(第三章) ===整合SpringCloud=== 整合 ...
- java类初始化顺序_《To Be a Better Javaer》-- Java 基础篇 vol.2:面向对象
Java是面向对象的高级编程语言,面向对象的特征如下: 面向对象具有抽象.封装.继承.多态等特性: 面向对象可以将复杂的业务逻辑简单化,增强代码复用性: 面向对象是一种常见的思想,比较符合人们的思考习 ...
- k9.第三章 K8s基础篇-必备Docker知识 (二)
3.Dockerfile用法 FROM:继承基础镜像 MAINTAINER:镜像制作作者信息 LABEL:镜像制作作者信息,新版建议使用LABEL RUN:用来执行shell命令 EXPOSE:暴露端 ...
- 穿越Java - 基础篇 第三章 面向对象介绍 | 第1节 面向对象思想
面向对象思想 理解: 面向对象更多的是一种思想的体现. 面向过程更多体现的是什么事情都要亲力亲为. 而面向对象跟多体现的是如何指挥别人做事情,只要明确我要干什么即可. 通过将相关或类似的功能 封装在不 ...
- java官网教程(基础篇)—— 基础的Java类 —— 基础 I / O
目录 基本 Java 类 基础 I/O I/O流 字节流 字符流 缓冲流 扫描和格式化 扫描 格式化 从命令行中进行IO操作 数据流 对象流 文件 I/O(采用 NIO.2) 什么是路径? Path类 ...
- Extjs 基础篇—— Function基础
这里主要是JS的基础知识,也是深入理解Ext的基础. 1.参数可变长,注意跟Java还是有一点区别的. 例: view source print? 1.function getUser(name,ag ...
- MYSQL 基础篇 | 02-MYSQL基础应用
文章目录 1 MySQL概述 2 SQL 2.1 SQL通用语法 2.2 SQL分类 2.3 DDL 2.3.1 数据库操作 2.3.2 表操作 2.4 DML 2.4.1 添加数据 2.4.2 修改 ...
- php学习基础篇之基础函数(数学 日期 字符串)、php循环流程控制
知识点: 一 . 基础函数(数学 日期 字符串) 二 . php循环流程控制 一 . 基础 函数(数学 日期 字符串) 函数 : 执行某项功能的特定代码. sin() cos() 数学中 sin(3 ...
- 基础篇——HTML基础 一
HTML基础 标签语义化 h 和 p标签 bui 和 小伙伴 img图片标签 链接 表单 标签语义化 在合适的地方使用合适的标签:该放p时就放p 为什么要标签语义化:因为浏览器只认识标签,没有语音语调 ...
最新文章
- NLLLoss CrossEntropyLoss Pytorch
- 剖析ASP.NET下部构造
- WMI技术介绍和应用——Event Consumer Provider
- 输入框中默认的值,判断是否输入内容
- python剑指offer跳台阶_【剑指offer】跳台阶I和II(Javapython)
- ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真实UR3机械臂的运动控制(2)
- 关于SAP Kyma在国内的落地情况
- C4C和CRM里获取当前登录用户分配的Organization Unit信息
- 离线java人脸识别开源算法_Java 离线人脸识别 基于ArcFace 2.0 Demo
- java web项目_[适合初中级Java程序员修炼手册从0搭建整个Web项目](二)
- .NET平台下几种SOCKET模型的简要性能供参考
- HDU 4857 逃生 【拓扑排序+反向建图+优先队列】
- 操作系统知识回顾(5)-内存管理
- Linux之date命
- Hadoop切换namenode为active
- CSS学习笔记(二)选择器
- 零基础入门cv - 街景字符编码识别_零基础入门CV赛事- 街景字符编码识别-03
- win7计算机自动关机设置在哪里设置方法,win7电脑自动关机怎么设置_win7电脑自动关机怎么设置在哪-win7之家...
- 渗透学习-文件上传篇-基础知识部分(持续更新中)
- 免信任型计算的扩容模型