小标
2018-11-14
来源 :
阅读 1826
评论 0
摘要:本文主要向大家介绍了C#编程之C#基础---->方法,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
本文主要向大家介绍了C#编程之C#基础---->方法,通过具体的内容向大家展示,希望对大家学习C#编程有所帮助。
public class Tree
{
/*
* 1.0考虑一个问题;
* 我们有一段代码 需要在不同的地方执行一次!!!
*
*
* 2.0如何实现
* a--> 复制粘贴
* b-->将这段代码封装成方法 在需要的两个地方各自调用一次就好了
*
*
* 3.0方法
* a--->对一段代码重用的机制
* b--->在面向过程中也会称作为函数 其实方法和函数指的都是同一个东西
*
*
* 4.0创建方法的语法
* 访问修饰符 方法返回值 方法名称([参数列表])
* {
* 方法体
* }
*
* 关于方法的定义
* a. 定义方法的位置:直接定义在类的下面.
* b. 访问修饰符有5种. public是其中的一种. 所以这个地方不用关心什么意思,直接写上public
* c. static关键字.
* 我们自己定义的方法 如果需要在1个被static修饰的方法中调用.
* 那么我们定义的方法必须要加上static才可以被调用.
* d. 方法的返回值
* e. 方法的名称:
* 1). 方法的名字要取的有意义. 让别人看到名字就知道方法的内部代码在做什么事情.
* 2). 方法中的代码是在完成1个功能,所以方法的名称要求使用1个动词.
* 3). 方法的名称每1个单词的首字母大写.
* f. 特别强调,小括弧后面没有分号.
*
* 5. 关于方法的调用
* 完整的调用方式: 类名.方法名()---->静态方法调用方式, new 类名().方法名()---->非静态方法调用 方法中加了static叫做静态方法;
* 如果调用的方法的地方和定义方法在同1个类中: 方法名();
*
*/
///
public static void GetnumOne()
{
//方法体
}
/*
* 访问修饰符 public private protected
*
*/
///
///
///
static int GetNumTwo(string str)
{
if (string.IsNullOrEmpty(str))
{
return 0;
}
else
{
return 1;
}
}
public string GetNum()
{
return "测试";
}
//------------------------------局部变量和成员变量--------------------------------------
/* 1. 局部变量: 定义在方法中的变量.
* 成员变量: 直接定义在类下面的变量.
*
*
* 2. 局部变量与成员变量的区别:
* a. 作用域不同:
* 局部变量只能在方法中访问.
* 成员变量可以本类的所有方法中访问.
*
* 成员变量如果希望在被static修饰的方法中访问.
* 那么这个成员变量也需要被staic修饰.
*
* b. 默认值不同
* 局部变量在声明的时候如果没有为其赋值 那么这个局部变量是没有值的.
* 所以在使用之前必须要保证这个变量中有值
*
* 成员变量在声明的时候如果没有为其赋值 那么这个成员变量是有默认值的.
* 如果成员变量的类型是值类型的 那么默认值是0
* 如果成员变量的类型是引用类型的 那么默认值是null
*
*
*
*
*/
public string Name; //想这种定义在类(class关键字)下的 叫做成员变量
public void TestDemo()
{
int num = 1; //这种定义在方法中的变量叫做局部变量 //只是在这个方法中有效
}
//------------------------------------------以下部分是属性介绍----------------------------------------
/* 1. 为什么要保护字段?
* 因为我们希望在为字段赋值或者取值的时候做1个逻辑验证.
*
* 2. 微软提供了一种更为简洁的语法来保护字段---属性.
* 属性的作用: 保护字段.
*
* 3. 如何使用属性来保护字段呢?
* a. 被保护的字段一定要私有化.
* b. 为这个字段写1个属性
* 语法:
* 访问修饰符 属性的类型 属性的名称
* {
* get
* {
* }
* set
* {
* }
* }
*
* 4. 外部如何操作属性.
* a. 图标为扳手的就代表属性.
* b. 外部操作的时候将属性当做字段来操作,使用赋值符号直接赋值或者直接写上属性的名称取值.
*
* 5. 属性到底是如何来保护字段的
* a. 为属性赋值的时候,会调用属性中的set代码块. 在set中可以通过关键字value拿到用户为属性赋的值
* 一般情况下,我们在set代码块中 取出用户为属性赋的值(value) 做逻辑验证.
* 如果符合逻辑 就将用户赋的值赋值给被保护的字段.
* 否则做默认处理.
*
* b. 当我们取属性的值的时候,就会执行属性中的get代码块的内容.
* 最终取到的值,是在get块中return回去的值.
* 一般情况下,我们在get代码块中 将属性保护的字段的值返回.
*
* 6. 写属性的时候要注意如下几点
* a、 访问修饰符. 其实任意都可以写, 因为属性是用来被外部访问的.
* 所以绝大多数情况下,属性的访问修饰符应该是public
* b、 属性的类型不能是void。 属性的类型一般情况下和被保护的字段的类型一致.
* c. 属性的名称: 每个单词的首字母大写.
* 属性的名称任意取,但是建议和被保护的字段的名称保持一致(做大小写区分) 方便代码的阅读
* d. 为属性赋值的时候,数据的类型要和属性的类型保持一致, 与被保护的字段的类型无关.
* 当然绝大多数情况下,属性的类型和被保护的字段的类型一致.
* e. set块中的value的类型 由 属性的类型 决定.
* f. get代码快必须要在结束之前返回个数据. 返回的数据的类型由属性的类型决定.
* g. 属性中只能包含get块和set块,其他的代码不能直接写在属性之中.
*
* 7. 注意
* a. 一定是先有字段,再用属性来保护它.
* b. 在get和set中操作的是字段.而不是操作属性. 如果操作属性的话就会发生死循环,
* c. 属性的类型绝大多数情况下和被保护的字段一致,
* 如果希望外界得到字段的值 的类型 不要和字段的类型一致 那么就可以不一致.
* bool类型的gender 希望得到1个string类型的"男‘女
* d. 1个字段对应1个属性. 不要多个字段对应1个属性这样很不好操作.
* e. 在set块中,我们是判断value是否符合逻辑,而不是判断字段.
*
* f. 在类的内部.取值的时候,是取属性的值呢还是取字段的值呢?
* 1) 如果属性取值的时候 没有做任何逻辑验证. 直接返回字段的值
* 那么这个时候,取属性的值和取字段的值是没有分别的,因为取出来的值都是一样的.
* 但是建议你取字段的值,因为这样效率更高.
* 2) 如果属性取值的时候,有做逻辑验证.那么这个时候取属性的值和取字段的值 取到的就不一样了.
* 那么根据你的具体情况来决定,看你希望得到什么值.
*
* 赋值的时候. 如果属性在赋值的时候经过了逻辑处理.那么这个时候赋值 给字段赋值和给属性赋值的效果不一样.
* 如果你希望你的值是很特殊 不需要经过验证 那么直接赋值给字段
* 如果你希望你的值也要验证 那么就赋值给属性.
*
* 8. 属性的本质是1个get方法和1个set方法.
* 只不过微软提供了1种更为简洁的方式来帮助写这两个方法
* 我们之所以可以再set里面通过value关键字取到用户赋的值 是因为set本质是1个方法 这个方法的参数叫做value
*
*
* 9. 为字段快速封装属性的快捷键: ctrl+r+e
*
* 10.C#关于属性的规范:
* 只要字段需要被外界访问.无论在取值或者赋值的时候是否有逻辑验证,都应该为这个字段封装属性.
*
*
* 11. 只写属性
* 属性中只有set块而没有get块. 那么只能为这个属性赋值. 而不能取这个属性的值.
* 只读属性
* 属性中只有get块而没有set块, 那么只能取这个属性的值 而不能为这个属性赋值.
*
* 属性中至少要有1个访问器..
*
* 12. 我们将值赋值给了属性,会以为将值存储在了属性之中.
* 不是这样的
* 属性是不能存储数据的. 我们给属性赋值 然后属性的set块将值存储到字段中.
*
* 在C#中只有变量才可以存储数据.
*
* 12. 自动属性
* 如果属性对某个字段的封装可读并且可写. 并且在读写的时候没有任何的逻辑验证.
* 那么这个时候,我们就可以不写字段,而直接写1个自动属性.
*
* 当我们写1个自动属, C#编译器在编译的时候,会自动的生产1个字段.
* 然后这个字段被自动属性所封装.
*
* 什么时候才可以写1个自动属性:
* a. 可读并且可写.
* b. 读写的时候没有任何逻辑验证
*
*/
public double weight;
public double Weight { get; set; }
private int age;
public int Age
{
get
{
return this.age;
}
set
{
this.age = value >= 0 && value <= 120 ? value : 18;
}
}
}
下面是用的控制台程序 做的演示demo
class Program
{
static void Main(string[] args)
{
//调用静态方法
Tree.GetnumOne();
Tree tree = new Tree();
Console.WriteLine(tree.GetNum()); //打印出tree.GetNum()的返回值 tree.GetNum() 是一个实例方法 所以要先创建Tree的实例
//使用属性
Console.WriteLine(tree.Age);//打印出 Age属性的值
Console.ReadKey();
}
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C#.NET频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号