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 具 ...
随机推荐
- 使用WebView时软键盘遮挡H5页面解决办法
简单解决办法:在清单文件中添加 android:windowSoftInputMode="adjustResize" 此举可在软键盘弹出时,重新测量布局,保证不遮挡光标的所在位置. ...
- 中国各省市县级 JSON 文件
参考链接:https://blog.csdn.net/lzhlzz/article/details/41347929
- MySQL创建数据库指定字符集
CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARSET utf8;
- Django中的信号基础知识
Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 1 2 3 4 5 6 7 8 9 10 ...
- Spring Aware接口
实现aware接口的bean必须在spring的xml文件中注册,由spring的IOC容器管理 1-ApplicationContextAware接口 可以获取spring的IOC容器 2-Bean ...
- Contains Duplicate I & III
Contains Duplicate I Given an array of integers, find if the array contains any duplicates. Your fun ...
- ES6学习笔记七Generator、Decorators
Generator异步处理 { // genertaor基本定义,next()一步步执行 let tell=function* (){ yield 'a'; yield 'b'; return 'c' ...
- Redis 通过 info 查看信息和状态
INFO INFO [section] 以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值. 通过给定可选的参数 section ,可以让命令只返回某一部分 ...
- VS 2008的64位编译环境的安装和使用
1. 安装64位编译环境 最近准备编译64位版本的程序.因为之前已经安装了VS 2008,开始以为只是使用VS 2008的安装文件添加功能即可,后来发现没这么简单.直接双击VS 2008的安装文件来安 ...
- Redis学习之一 安装
一.简介 定义 Remote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C ...