c#属性(Property)
属性(Property)是类(class)、结构(structure)和接口(interface)的命名(named)成员。类或结构中的成员变量或方法称为 域(Field)。属性(Property)是域(Field)的扩展,且可使用相同的语法来访问。它们使用 访问器(accessors) 让私有域的值可被读写或操作。
该代码主要是帮助读者了解属性的用法,代码实现了添加属性值和根据添加的属性值进行筛选
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text; namespace 编码练习
{
//创建一个类包含两个属性
class People
{
public string Name { get; set; }
public string Address { get; set; }
public People(string name, string address)
{
this.Name = name;
this.Address = address;
} }
//继承两个接口(枚举/格式化)
class Peoples : IEnumerable
{
//创建一个对象列表
private List<People> Lpeoples { get; set; }
private StringBuilder Sbuilder { get; set; }
public Peoples()
{
Lpeoples = new List<People>();
}
//创建一个可以往列表加属性实例的方法
public void Add(People people)
{
Lpeoples.Add(people);
}
//获取对象值
public IEnumerator GetEnumerator()
{
foreach (var p in Lpeoples)
{
yield return p;
}
} public override string ToString()
{
return GetContent(Lpeoples);
}
public string Tostring(string format)
{
return ToString(format, CultureInfo.CreateSpecificCulture("zh-CN"));
}
public string ToString(string format, IFormatProvider formatProvider)
{
IEnumerable<People> ps = Lpeoples;
if (format.ToUpperInvariant() == "B")
{
ps = from p in Lpeoples where p.Address == "北京" select p;
}
else if (format.ToUpperInvariant() == "S")
{
ps = from p in Lpeoples where p.Address == "上海" select p;
}
return GetContent(ps);
}
//将数据连接到数组
private string GetContent(IEnumerable<People> peoples)
{
Sbuilder = new StringBuilder();
foreach (var p in peoples)
{
Sbuilder.AppendLine(string.Format("{0}{1}", p.Name, p.Address));
}
return Sbuilder.ToString();
}
}
public class Start
{
public static void Main()
{
Peoples peoples = new Peoples()
{new People("zhangsan","北京"),new People("lisi","上海"),new People("wangwu","北京"),new People("naliu","北京")};
Console.WriteLine("本站会员有:");
Console.WriteLine(peoples.ToString());
Console.WriteLine("北京的会员有:");
Console.WriteLine(peoples.Tostring("B"));
Console.WriteLine("上海的会员有:");
Console.WriteLine(peoples.Tostring("S"));
Console.ReadLine(); }
}
}
附加知识:
IFormatProvider接口的引用,该接口用于格式化操作,当进行数字,日期时间,字符串匹配时,都会进行CultureInfo的操作,文中CultureInfo.CreateSpecificCulture("zh-CN")意为结果输出的是<简体,中国>
c#属性(Property)的更多相关文章
- 区分元素特性attribute和对象属性property
× 目录 [1]定义 [2]共有 [3]例外[4]特殊[5]自定义[6]混淆[7]总结 前面的话 其实attribute和property两个单词,翻译出来都是属性,但是<javascript高 ...
- 属性(@property)、@synthesize
先前我们学的实例变量是这样的 { int _age; int _height; int age; } 后来学属性 @property int age; 看到@property 会自动编译生成某个成员变 ...
- Object的属性property详细解释(自动生成成员变量)
类Class中的属性property: 在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interfac ...
- OC 实例变量(instance var)与属性(@property)的关系 isa指针
实例变量(instance var)与属性(@property)的关系 Objective-C 2.0之后,声明一个@property name自动产生一个实例变量,名为_name,因此省去实例变量和 ...
- iOS中属性Property的常用关键字的使用说明
属性关键字的作用 现在我们iOS开发中,基本都是使用ARC(自动引用计数)技术,来编写我们的代码.因此在属性property中我们经常使用的关键字有strong,weak,assign,copy,no ...
- Effective C# 学习笔记(原则一:始终能的使用属性(property),而不是可直接访问的Data Member)
原则一:始终能的使用属性(property),而不是可直接访问的Data Member Always use properties instead of accessible data memb ...
- 对用户控件(ascx)属性(property)赋值
对用户控件(ascx)属性(property)赋值 Insus.NET写此博文,是对用户控件(ASCX)的属性赋值经验与技巧分享.是这样子的,在做新闻站点时,一般都会有分很多类别. 在站点首页会显示最 ...
- Yii2基本概念之——属性(property)
学习任何一门学问,往往都是从起基本的概念学起.万丈高楼平地起,这些基本概念就是高楼的基石,必须做详尽的分析.我们知道,Yii2是一款脉络清晰的框架,理顺了基础的概念和基本功能,学习更高级和复杂的功能就 ...
- Day8 封装 静态属性property
封装:将类的属性隐藏 #先看如何隐藏 1,在定义的属性之前加入__. class Foo: __N=111111 #_Foo__N def __init__(self,name): self.__Na ...
- 理解特性attribute 和 属性property的区别 及相关DOM操作总结
查一下英语单词解释,两个都可以表示属性.但attribute倾向于解释为特质,而property倾向于解释私有的.这个property的私有解释可以更方便我们下面的理解. 第一部分:区别点 第一点: ...
随机推荐
- Python Flask高级编程之从0到1开发《鱼书》精品项目 ☝☝☝
Python Flask高级编程之从0到1开发<鱼书>精品项目 ☝☝☝ 一 .安装环境我们使用 flask web框架,并用 sqlalchemy来做数据库映射,并使用 migrate做数 ...
- 一个最简单的springboot
现在项目里使用springboot,平时开发并不太关注springboot的一些基本配置,现在想整理一下springboot相关内容. 实际开发中都会因为各种业务需求在springboot上添加很多东 ...
- Spring Security 入门 (二)
我们在篇(一)中已经谈到了默认的登录页面以及默认的登录账号和密码. 在这一篇中我们将自己定义登录页面及账号密码. 我们先从简单的开始吧:设置自定义的账号和密码(并非从数据库读取),虽然意义不大. 上一 ...
- 关于参加AWD攻防比赛心得体会
今天只是简单写下心得和体会 平时工作很忙 留给学习的时间更加珍少宝贵. 重点说下第二天的攻防比赛吧 . 三波web题 .涉及jsp,php,py. 前期我们打的很猛.第一波jsp的题看到有首页预留后 ...
- Hadoop和YARN :map+shuffle+reduce走读
今天做了一个hadoop分享,总结下来,包括mapreduce,及shuffle深度讲解,还有YARN框架的详细说明等. v\:* {behavior:url(#default#VML);} o\:* ...
- Cocos2d-x 学习笔记(14.2) EventListener _paused _isEnabled _isRegistered
监听器3个bool类型成员变量. 监听器能设置是否能够接收事件. 能随时接收事件进行处理,此时把它看做工作状态,需要满足条件: _paused = false; _isEnabled ...
- Halcon一日一练:读取文件目录图像的三种方法
第一种方法: 读了一个单一图像: read_image(Image,'fabrik') 这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的 ...
- vue——同一局域网内访问项目
1.想要在手机上访问本地的vue项目,首先要保证手机和电脑处在同一局域网内(连着同一个无线网) 2.将你电脑的ip设置为固定ip(ipconfig查找本地的ip,然后修改它,改为你想变的数字) 3.在 ...
- SpringBoot中如何优雅的读取yml配置文件?
YAML是一种简洁的非标记语言,以数据为中心,使用空白.缩进.分行组织数据,从而使得表示更加简洁易读.本文介绍下YAML的语法和SpringBoot读取该类型配置文件的过程. 本文目录 一.YAML基 ...
- 认证授权-学习笔记1-OAuth 2.0
简介 客户端必须得到用户的授权(authorization grant),才能获得令牌(access token).OAuth 2.0定义了四种授权方式. 授权码模式(authorization co ...