C#概念总结(三)
1、定义结构体
定义了结构体,必须使用了stuct语句,struct定义了一个带有多个成员的的新数据类型。C# 的结构不同于C的。具有一下等特点:
结构可以有方法。字段、索引、属性、运算方法和事件。结构可以定义构造函数,但是不能定义析构函数,也不能定义默认的构造函数。与类不同得失结构不能继承其他结构。或者类、结构不能作为其他结构的基础捉着类。结构可以实现一个或者对个接口。
结构成员不能是abstract 、vritual 、protected 。当我们使用new 操作符创建一个结构对象的时候。会调用适当的构造函数创建结构。与类不同,结构可以不适用new 关键字既可以被实例化。 如果不适用new 操作符。只有在所用的字段都内初始化之后,字段才会被赋值。对象才会被使用,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
struct book {
public String book_title;
public String book_name;
public String book_subject;
public int book_id;
public void getValue(String t, String a, String b, String d, int n) {
book_title = a;
book_name = b;
book_subject=t;
book_id=n;
}
public void display() {
Console.WriteLine("Title {0}", book_name);
Console.WriteLine("book_title {0}", book_title);
Console.WriteLine("book_subject {0}", book_subject);
Console.WriteLine("book_id {0}", book_id);
Console.WriteLine("book_name {0}", book_name);
}
}
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
book book1 = new book();
book book2 = new book();
book1.getValue("c programer", "C #", "java", "编程语言", 12412312);
book2.getValue("python programer", "c++ ", "java", "编程语言", 124123412);
book1.display();
book2.display();
Console.ReadLine();
Console.ReadKey();
}
}
}
2、C#枚举类型: 枚举类型是一组命名整数常量,枚举类型使用enum关键字声明。 C#枚举是值类型,枚举包含自己的值,且不能继承传递。
enum <enum_name> {enumeration list } ;

3、当你定义一个类的时候,你定义了一个数据类型的蓝图,这实际上没哟与定义任何的数据,但是他定义了类的名称,意味着类的对象有什么组成以及这个对象上可执行是么样的操作,对象是实例额的,构成类的方法和变量成为类的成员。
类的默认访问标志符是internal ,成员的默认访问标志符是 private
类的成员函数是一个类定义中有他定义或者原型函数,就像其他变量一样作为一个类的成员,他能在类的任何对象上操作。且能访问该对象的类的所有成员。
C#中的构造函数是一个特殊的函数成员,当创建类的新对象时候执行。 构造函数的名称和类的名称相同,他没有任何的返回类型。下面说明构造函数返回类型。
默认构造函数没有任何的参数。但是如果需要一个带有参数的构造函数,这种构造函数的参数叫做参数化的构造函数,这种技术可以使得创建函数的时候对给的对象赋值初始化。具体的实例如下:
C#中的析构函数 是一个特殊的成员函数,当类的对象超出范围时执行。析构函数的名称是再去爱类的名称之前加上一个~线,他不返回值,也不带任何参数。
析构函数用于在结束程序之前石峰资源,西沟函数不能继承和重载。
C#类的静态成员
我们可以使用static 关键字吧雷闯元定义我建泰的,当我们声明静态的时候,意味无论多少个里类的对象来创建,只会有一个静态成员的副本。声明为静态的变量可以直接通过类来调用。静态冰凉可以在成员函数或者类的定义外部进行初始化,也可以在类的定义内部初始化静态变量。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication17
{
class Static {
public static int num;
public void count()
{
num++;
}
public int getNum()
{
return num;
}
}
class Program
{
static void Main(string[] args)
{
Static s1 = new Static();
s1.count();
s1.count();
s1.count();
Console.WriteLine("s1的变量num {0}", s1.getNum());
Console.ReadLine();
Console.ReadLine();
}
}
}
4、C#继承
继承是面向对象小衡虚设计中的重要概念,继承允许我们根据一个类定义类定义另一个类,这使得创建和维护应用程序变得简单,同时节约了开发的时间。当创建一个类的时候,程序员不需要重新编写新的数据成员函数,只需要设计一个新的类,继承了集资的类的成员即可已有的类被称为基类,这个新的类叫做派生类。
集成的思想实现了 (is_A)的关系。一个类可以派生多个类或者接口。 这就意味着从这个基类或者接口继承数据和函数。C#继承不同于Java的继承 Java继承使用的是 extends关键字。
派生类继承了街垒的成员和方法,因此父类对象在子类对象创建之前被创建,
多重继承,是指一个类可以同时从多余一个父类继承行为与特征的功能,与单一继承相对,单一继承指一个类只可以继承一个父类,C#不支持多重继承,但是课可以使用接口类实现多重继承的效果。
下面就单纯的接口做一个简单的列子:
using System
namespace inheritanceApplication
{
class shap{
public void setWidth(int w){
width=w;
}
public void setHeight(int h){
height=h;}
}
protected int height;
protected int width;
}
public interface Paintcost{
int getCost(int area);
}
public Rectangle:shape,Paintcost{
public int getArea(){
return width*height;
}
public int getcost(int area){
return area=23;
}
}
6、C#多态性
多态性意味着多重形式,在面向对象编程的范畴中,多态性往往表现为一个接口多个功能。多态性可以使静态的多态也可以是动态的多态。静态多态中,函数的响应式在编译时发生,动态的的多态函数的响应是运行时发生。
静态多态性: 在编译的时候,函数和对象的链接机制被称为早期的绑定,也称为静态绑定,C#提供两种技术来事项静态的多态性。分别为函数的重载,和云算符的重载。
函数重载:可以在同一个范围内对相同的函数名有多个定义,函数定义必须彼此不同,可以是参数列表中的参数不同,也可以是参数的个数不同。不能重载只有返回类型不同的函数声明。
动态多态性:C#允许使用关键字abstract创建抽象类,用于提供接口的部分类的试下,当一个派生类继承自该抽象类时,实现即完成,抽象类包含抽象方法,抽象方法可以被派生实现,派生具有更加专业的功能。通过类定义前面放置关键字sealed,可以将类声明成密封类,当一个类被声明成密封类的时候,他不能被继承,抽象类不能被声明为sealed。
using System;
namespace PolymorphismApplication
{
abstract class Shape
{
public abstract int area();
}
class Rectangle: Shape
{
private int length;
private int width;
public Rectangle( int a=0, int b=0)
{
length = a;
width = b;
}
public override int area ()
{
Console.WriteLine("Rectangle 类的面积:");
return (width * length);
}
} class RectangleTester
{
static void Main(string[] args)
{
Rectangle r = new Rectangle(10, 7);
double a = r.area();
Console.WriteLine("面积: {0}",a);
Console.ReadKey();
} }
C#概念总结(三)的更多相关文章
- CSS:概念和三种样式
简介: CSS(Cascading Style Sheets):层叠样式表,它用来控制HTML标签的样式,给网页结构穿衣服~ CSS的编写格式是键值对的形式 -> 格式:属性名 : 属性值: ...
- oracle 11g RAC 的一些基本概念(三)
Grid Infrastructure共享组件 Grid Infrastructure使用两种类型的共享设备来管理集群资源和节点:OCR(Oracle Cluster Registry)和表决磁盘 ...
- 新概念英语三 新东方主讲Lesson1
新概念二 Lesson95 词汇 ①get a shock 吓了一跳,得到一个惊喜 例:his wife got a shock get into a such mess 这么不幸搞得一片狼籍弄得这样 ...
- 应用负载均衡之LVS(一):基本概念和三种模式
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- LVS(一):基本概念和三种模式
网站架构中,负载均衡技术是实现网站架构伸缩性的主要手段之一.所谓"伸缩性",是指可以不断向集群中添加新的服务器来提升性能.缓解不断增加的并发用户访问压力. 负载均衡有好几种方式:h ...
- (1) LVS基本概念和三种模式
网站架构中,负载均衡技术是实现网站架构伸缩性的主要手段之一. 所谓"伸缩性",是指可以不断向集群中添加新的服务器来提升性能.缓解不断增加的并发用户访问压力.通俗地讲,就是一头牛拉不 ...
- Weka中数据挖掘与机器学习系列之基本概念(三)
数据挖掘和机器学习 数据挖掘和机器学习这两项技术的关系非常密切.机器学习方法构成数据挖掘的核心,绝大多数数据挖掘技术都来自机器学习领域,数据挖掘又向机器学习提出新的要求和任务. 数据挖掘就是在数据中寻 ...
- Eureka的服务注册与发现概念(三)
一.Eureka介绍 Netflix在设计Eureka时遵守的AP原则.Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层 ...
- 《JavaScript高级程序设计》笔记:基本概念(三)
数据类型 ECMAScript中有5种简单数据类型(也称为基本数据类型):undefined,null,boolean,number和string. typeof typeof null会返回“obj ...
- JAVA基础概念(三)
JAVA方法入参和返回类型 方法入参 基础数据类型 引用数据类型 修饰符 返回类型 方法名(参数类型 参数名,参数类型 参数名...){//方法体return} 方法返回类型 return xxx 具 ...
随机推荐
- Jmeter+Ant+Jenkins 接口自动化之简单demo
之前的文章我们已经分享过了 Jmeter+Ant 的批量执行 ,并且搭建好了Jenkins部署平台,如何再将三者完美结合呢? 1.首先打开Jenkins主页面,进入“系统管理-插件管理”,安装相关的插 ...
- 20165221 JAVA第四周学习心得
教材内容总结 子类与继承 子类与父类 定义的标准格式为 class 子类名 extends 父类名 { ... } 如果一个类的声明中,没有使用extends关键字,则默认为Object类. 子类的继 ...
- ffmpeg笔记
1.视频降低质量,减小体积: ffmpeg -i aaa.mp4 -strict -2 -qscale 20 -y outfile.mp4
- P3168 [CQOI2015]任务查询系统
题目地址:P3168 [CQOI2015]任务查询系统 主席树的模板题 更模板的在这儿:P3834 [模板]可持久化线段树 1(主席树) 形象的说,P3834是"单点修改,区间查询" ...
- Des加密解密算法java实现
package tech.fullink.eaglehorn.utils; import javax.crypto.Cipher; import javax.crypto.SecretKey; imp ...
- Tensorflow的Queue读取数据机制
参考链接:http://www.sohu.com/a/148245200_115128
- zynq linux驱动之PL-PS中断【转】
转自:https://blog.csdn.net/h244259402/article/details/83993524 PC:Windows 10 虚拟机:ubuntu 16.04 vivado:2 ...
- Nginx在线服务状态下平滑升级及ab压力测试【转】
今天,产品那边发来需求,说有个 APP 的 IOS 版本下载包需要新增 https 协议,在景安购买了免费的 SSL 证书.当我往 nginx 上新增 ssl 时,发现服务器上的 nginx 居然没编 ...
- 使用jsencrypt(rsa加密方式)给js加密防被刷
加密步骤 1.需要加密的参数 * * ).toISOString().replace(/T/g, }Z/, ''); //使用本地时间,然后转换格式 2.js中引用jsencrypt.js文件,然后实 ...
- vc++基础班[23]---文件夹的基本操作
①.文件夹的创建:CreateDirectory ※※※ 注意:此函数只能创建一层目录,比如想在 C 盘下的 Temp 目录下创建新目录为:123 那么前提是 Temp 这个目录存在才可以! ...