@

字段

字段的声明与声明变量类似,可以添加访问修饰符,通常情况下字段设置为私有的,然后定义属性对字段的读写进行限制

一般的命名规范约定,私有字段使用下划线前缀、小驼峰命名

private int _age    //定义一个私有字段_age

属性

属性拥有两个访问器(get和set),用于控制读取和写入,通常和字段配套使用,用来对字段进行读写限制

//定义一个Age属性,限制赋值给_age字段的值为18到60岁之间
//get和set类似于不能接受参数的方法,value是赋给Age属性的值
public int Age
{
get { return _age; }
set {
if(value >= 18 && value<=60)
_age = value;
}
}

方法

正式的C#术语中区分函数和方法,但是在初期,我们也可以把方法当成函数来理解

//定义一个SayAge方法,传递一个int类型的变量给SayAge方法,输出“我的年龄是~”
public void SayAge(int age)
{
Console.WriteLine($"我的年龄是{age}")
}

构造函数

构造函数是在创建对象的时候调用的方法,主要作用是初始化字段(为字段赋值),构造函数支持重载,即根据不同的参数签名(参数列表和参数类型共同组成),调用不同的构造函数

//定义Pen类,并创建构造方法
class Pen
{
private int _price;
//无参构造方法,将_price字段初始化为0
public Pen()
{
this._price = 0;
}
//接收一个int类型的构造方法,将_price字段初始化为传递进来的price变量
public Pen(int price)
{
this._age = price;
}
}
//注意事项:在如果没有定义构造函数,编译器会自动添加一个无参构造函数
//注意事项:如果自行定义了构造函数,无论带几个参数,编译器就不会再自动添加无参构造函数,如有需要,需要手动声明
//注意事项:如果构造函数没有为字段赋值,编译器会将值类型初始化为0,引用类型初始化为NULL
类和对象的简单解释

类是类别,是一个虚指;对象是具体的,是一个实指。如钢笔是一个类,我的价值15块的钢笔就是一个对象。

创建类和对象
//借用上方的Pen类,创建一个对象
Pen myPen = new Pen(15);
//此条语句创建了一个myPen对象,并调用Pen(int price)构造函数将myPen对象的_price字段赋值为15

类中成员的归属问题

类中的成员有静态和非静态的区别,非静态成员每个对象都有一份,静态成员类有一份

Pen myPen = new Pen(15);
Pen hePen = new Pen(150);
//上方Pen类中price字段定义为非静态成员
//在定义myPen和hePen两个对象中,每个对象都有自己的_price字段

静态成员属于类,对象是没有的,且一个类的每个静态成员只有一份

//静态成员使用static修饰
//在Pen中定义一个Write静态方法,这个方法属于类,使用类名.方法名调用,例如这里需要调用此静态方法的语句是Pen.Write()
class Pen
{
public static void Write()
{
Console.WriteLine("笔可以写字");
}
}
//注意事项:类的静态成员与对象无关,即实例化的Pen的对象myPen,是没有Write()方法的
//注意事项:每个类的每个静态成员只有一份,即Pen.Wirte()指向的方法和使用Pen实例化若干个对象后调用的Pen.Write()是同一个

类也可以定义为静态,静态类不能再实例化对象,定义静态类的主要作用是提供一些常用方法

如C#中的Console.WriteLine()就是一个静态类中的静态方法

C#类中的成员的更多相关文章

  1. YTU 2618: B 求类中数据成员的最大值-类模板

    2618: B 求类中数据成员的最大值-类模板 时间限制: 1 Sec  内存限制: 128 MB 提交: 430  解决: 300 题目描述 声明一个类模板,类模板中有三个相同类型的数据成员,有一函 ...

  2. C++(十六) — 类中引用成员函数、命名空间的使用

    1.为什么类中引用成员函数? 类将属性和方法做了封装.类是一种数据类型,也就是:固定大小内存块的别名. 类的定义是一个抽象的概念,定义时不分配内存,当用类定义对象时,才分配一个固定大小的内存块. 此时 ...

  3. YTU 2639: 改错题:类中私有成员的访问

    2639: 改错题:类中私有成员的访问 时间限制: 1 Sec  内存限制: 128 MB 提交: 431  解决: 297 题目描述 /* 改错题: 设计一个日期类和时间类,并编写全局函数displ ...

  4. c++中可以对类中私有成员中的静态变量初始化吗?

    转载http://www.cnblogs.com/carbs/archive/2012/04/04/2431992.html 问题:我看的书上写的对私有部分的访问可以是公共部分的成员函数,也可以是友员 ...

  5. 第十六周oj刷题——Problem I: 改错题:类中私有成员的訪问

    Description 改错题: 设计一个日期类和时间类,并编写全局函数display用于显示日期和时间. 要求:display函数作为类外的普通函数,而不是成员函数 在主函数中调用display函数 ...

  6. js里面如何才能让成员方法去调用类中其他成员

    function fun(){ var _this = this; //如果函数是用var定义的私有函数,如下 var func1 = function(){ } //那么类中其他函数都可以直接通过f ...

  7. 【Java.Regex】使用正则表达式查找一个Java类中的成员函数

    代码: import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; imp ...

  8. 关于C++类中的成员

    突然发现,如果C++的类成员中存在共有的成员,则可以通过指针的偏移来访问私有的成员变量,当然前提是对内存对齐比较清楚.只要骗过了编译器就可以为所欲为了. #include <cstdio> ...

  9. C++类中引用成员和常量成员的初始化(初始化列表)

    如果一个类是这样定义的: Class A { public: A(int pram1, int pram2, int pram3); privite: int a; int &b; const ...

随机推荐

  1. CodeForces - 612D 思维

    题意: 给你n个线段和一个整数k,你需要找出来所有能被任意k条线段同时覆盖的区间个数的最小值,并按从左到右的顺序输出每个区间. 题解: 对于题目输入的n个线段的左端点L,右端点R,把它们分开放在结构体 ...

  2. Tomacat目录以及服务器配置文件信息

    一. 1.Tomacat的启动: 在我的windows10中我下载的是8.5版本的tomacat,我就是通过".sh"文件来打开和关闭tomacat 要打开.sh文件还需要 这个G ...

  3. Codeforces Gym-102219 2019 ICPC Malaysia National E. Optimal Slots(01背包+输出路径)

    题意:给你一个体积为\(T\)的背包,有\(n\)个物品,每个物品的价值和体积都是是\(a_{i}\),求放哪几个物品使得总价值最大,输出它们,并且输出价值的最大值. 题解:其实就是一个01背包输出路 ...

  4. python博客大全

    python技术博客 egon博客 计算机基础系列一:计算机硬件 - linhaifeng - 博客园 https://www.zhihu.com/people/xiaoyuanqujing #ego ...

  5. Redis 事务 & 消息队列

    Redis 消息队列介绍 什么是消息队列 消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠传递,消息生产者只管把消息发布到消息队列中而不 ...

  6. windows 命令行 cmd 控制exe程序输入输出并比较

    参考 https://www.cnblogs.com/zccz14/p/4588634.html 例子: 对exe输入输出 使用fc比较不同

  7. 牛客网多校第4场 D Another Distinct Values 【构造】

    题目:戳这里 题意,n*n的矩阵,只能填-1,0,1,问能不能使该矩阵的任意行和列的和都不想等. 解题思路:戳这里 可以说是一目了然了 附ac代码: 1 #include<iostream> ...

  8. scu-4440 rectangle (非原创)

    Rectangle frog has a piece of paper divided into nn rows and mm columns. Today, she would like to dr ...

  9. HDU 3247 Resource Archiver(AC自动机 + 状压DP + bfs预处理)题解

    题意:目标串n( <= 10)个,病毒串m( < 1000)个,问包含所有目标串无病毒串的最小长度 思路:貌似是个简单的状压DP + AC自动机,但是发现dp[1 << n][ ...

  10. go modules——HelloWorld示例

    go modules--HelloWorld示例 go modules 存在的意义是方便代码的共享(虽然这会使自己开发过程中有一些小小的麻烦) 开发第一步,创建一个github仓库,然后克隆到本地 首 ...