属性:

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#面向对象基础属性的更多相关文章

  1. python面向对象基础-属性/方法

  2. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

  3. 从零开始学Python第六周:面向对象基础(需修改)

    标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...

  4. python面向对象基础

    面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...

  5. java基础学习05(面向对象基础02)

    面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...

  6. java基础学习05(面向对象基础01--类实例分析)

    面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...

  7. java基础学习05(面向对象基础01)

    面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...

  8. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  9. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

随机推荐

  1. css中的浮动与三种清除浮动的方法

    说到浮动之前,先说一下CSS中margin属性的两种特殊现象 1, 外边距的合并现象: 如果两个div上下排序,给上面一个div设置margin-bottom,给下面一个div设置margin-top ...

  2. Ngrok让你的本地Web应用暴露在公网上

    1.Ngrok介绍 Ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道.Ngrok可捕获和分析所有通道上的流量,便于后期分析和重放.简单来说,利用 Ngrok可以 ...

  3. Linux学习之文件操作

    Linux,一起学习进步-    mkdir The mkdir command is used to create directories.It works like this: mkdir命令是用 ...

  4. mac下安装及配置tomcat

    mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...

  5. C++ 事件驱动型银行排队模拟

    最近重拾之前半途而废的C++,恰好看到了<C++ 实现银行排队服务模拟>,但是没有实验楼的会员,看不到具体的实现,正好用来作为练习. 模拟的是银行的排队叫号系统,所有顾客以先来后到的顺序在 ...

  6. C#与C++通信

    # C#与C++相互发送消息 # ## C#端: ## namespace CshapMessage { /// /// MainWindow.xaml 的交互逻辑 /// public partia ...

  7. 【转】为什么我们都理解错了HTTP中GET与POST的区别

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  8. celery使用的一些小坑和技巧(非从无到有的过程)

    纯粹是记录一下自己在刚开始使用的时候遇到的一些坑,以及自己是怎样通过配合redis来解决问题的.文章分为三个部分,一是怎样跑起来,并且怎样监控相关的队列和任务:二是遇到的几个坑:三是给一些自己配合re ...

  9. 通过sails和阿里大于实现短信验证

    通过sails与阿里大于来实现注册短信验证码的发送,逻辑图如下 1.用户在客户端发送手机号给服务器,服务器接收到手机号,生成对应时间戳,随机四位数验证码 2.服务器将电话号码和验证码告诉阿里大于服务器 ...

  10. 对Maven、gradle、svn、spring 3.0 fragment、git的想法

    1.Maven Maven可以构建项目,采用pom方式配置主项目和其他需要引用的项目.同时可结合spring3.0的新特性web  fragment. 从现实出发,特别是对于管理不到位,程序员整体素质 ...