2.C#面向对象基础属性
属性:
1.一般属性开头字母大写,字段开头字母小写。
2.通过public来赋值的方法无法判断赋值是否非法!
3.无论赋值如何,取值如果就是不采用赋值的结果,那么无论赋值什么都不管用。
4.经典错误之死循环。
5.只读属性。
6..net3.0以上支持简写代码
例一:
通过public来赋值的方法无法判断赋值是否非法!
验证代码如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace stduy2
{
class Program
{
static void Main(string[] args)
{
Person p = new Person(); p.Age = ;//赋值
Console.WriteLine("星云的年龄:Age={0}",p.Age);//取值结果22
p.Age = -;
Console.WriteLine("所以星云修改后的年龄:Age={0}\n", p.Age);//取值结果22
p.Age1 = -;//这种赋值方法,无法判断合法值
Console.WriteLine("通过public来赋值的方法无法判断赋值是否非法!\n所以星云新的年龄为错误值:Age1={0},", p.Age1);//取值结果-100
Console.ReadKey();
}
}
class Person
{
private int age;
public int Age1;
public int Age
{
set //赋值
{
if (value< )
{
Console.WriteLine("\n警告:年龄修改失败,年龄将保持不变,失败原因:年龄不能为负数!");
}
else
this.age = value;
}
get //取值
{
return this.age; }
}
}
}
运行截图:
例二:
无论赋值如何,取值如果就是不采用赋值的结果,那么无论赋值什么都不管用。
代码验证如下:
using System;
using System.Collections.Generic;
using System.Text; namespace stduy2
{
class Program
{
static void Main(string[] args)
{
Person p = new Person(); p.Age = ;//赋值
Console.WriteLine("星云的年龄:Age={0}",p.Age);//取值返回值520
p.Age = -;
Console.WriteLine("所以星云修改后的年龄:Age={0}\n", p.Age);//取值,返回值为520
p.Age = ;
p.Age = p.Age + ;
Console.WriteLine("\n计算后星云年龄为p.Age={0}",p.Age);//取值,所以返回值是520
Console.ReadKey();
}
}
class Person
{
private int age;
public int Age1;
public int Age
{
set //赋值
{
if (value< )
{
Console.WriteLine("\n警告:年龄修改失败,年龄将保持不变,失败原因:年龄不能为负数!");
}
else
this.age = value;
}
get //取值
{
return ;
}
}
}
}
程序运行截图:
例三:经典错误之死循环:
代码如下:
using System;
using System.Collections.Generic;
using System.Text; namespace stduy2
{
class Program
{
static void Main(string[] args)
{
Person p = new Person(); p.Age = ;//赋值
Console.WriteLine("星云的年龄:Age={0}",p.Age);//取值死循环
Console.ReadKey();
}
}
class Person
{
private int age;
public int Age
{
set //赋值
{
this.Age = value;
}
get //取值
{
return this.Age; }
}
}
}
例四:只读属性:
using System;
using System.Collections.Generic;
using System.Text; namespace Person
{
class Program
{
static void Main(string[] args)
{
person p = new person();
p.IncAge();
Console.WriteLine("年龄:{0}", p.Age);
p.IncAge();
Console.WriteLine("年龄:{0}",p.Age);
Console.ReadKey();
}
} class person
{
private int age;
public int Age //只读属性
{
get { return age; } }
public void IncAge()
{
age++;
}
}
}
运行截图:
例五:.net3.0以上支持简写代码:
using System;
using System.Collections.Generic;
using System.Text; namespace Person
{
class Program
{
static void Main(string[] args)
{
person p = new person();
p.Age = ;
Console.WriteLine("星云年龄:{0}", p.Age);
Console.ReadKey();
}
} class person
{ public int Age
{
set;//编译器自动帮我们生成私有字段和set、get代码块。
get; }
public String Name
{
set;
get;
}
}
}
运行截图:
2.C#面向对象基础属性的更多相关文章
- python面向对象基础-属性/方法
- 了解JavaScript 面向对象基础 & 原型与对象
面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...
- 从零开始学Python第六周:面向对象基础(需修改)
标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...
- python面向对象基础
面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...
- java基础学习05(面向对象基础02)
面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...
- java基础学习05(面向对象基础01--类实例分析)
面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
随机推荐
- Unity 序列化 总结
查找了 Script Serialization http://docs.unity3d.com/Manual/script-Serialization.html 自定义序列化及例子: http:// ...
- Android GridView 通过seletor 设置状态和默认状态
Android中可以通过selector控制GridView Item 的状态,而省去使用代码控制 GridView View Selector Xml文件 <?xml version=&quo ...
- bootstrap-fileinput 简单使用
bootstrap-fileinput 是一款图片/文件上传 bootstrap 插件,简单示例代码: <!DOCTYPE html> <html> <head> ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- Windos环境用Nginx配置反向代理和负载均衡
Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...
- javascript高性能编程-算法和流程控制
代码整体结构是执行速度的决定因素之一. 代码量少不一定运行速度快, 代码量多也不一定运行速度慢. 性能损失与代码组织方式和具体问题解决办法直接相关. 倒序循环可以提高性能,如: ...
- Android Studio切换为eclipse的快捷键之后还是有区别的部分快捷键
Android Studio Eclipse 把代码提示换成了Class Name Completion, 快捷键是Ctrl+Alt+Space(空格键). 代码提示快捷键Alt+/, ...
- join Linq
List<Publisher> Publishers = new List<Publisher>(); Publisher publish1 = new Publisher() ...
- centos下开启ftp服务
如果要ftp访问linux需要安装ftp服务,vsftpd是Linux下比较好的的FTP服务器. 一.检查安装vsftp //检查是否安装vsftpd rpm -qa | grep vsftpd // ...