属性(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")意为结果输出的是<简体,中国>

最新文章

  1. 如何去掉dede列表推荐时标题被加粗
  2. Scrollview嵌套Listview运行后最先显示出来的位置不在顶部而是中间问题
  3. django 动态更新属性值
  4. 性能测试报告的指标选择、数据选择和分析的参考【以Apache AB test为例】
  5. Django 源码小剖: 应用程序入口 WSGIHandler
  6. sql注入实例分析
  7. [转]SQL:JOIN用法
  8. js之Function原型
  9. android 定时器(Handler Timer Thread AlarmManager CountDownTimer)
  10. Springboot 之 解决IDEA读取properties配置文件的中文乱码问题
  11. Spring ES
  12. 匹配字符串中的s开头的单词,并替换
  13. 视频转GIF动态图怎样实现
  14. ORA错误总结
  15. MFCC
  16. easyui datebox 只选择月份的方法
  17. bootstrap file input 多图片上传编辑THINKPHP5
  18. C++ STL 常用查找算法
  19. md5sum/opensll md5
  20. [LintCode]判断一个字符串是否包含另一个字符串的所有字符

热门文章

  1. C# 添加、读取、删除Excel文档属性
  2. Flask框架整个流程源码解读
  3. Bran的内核开发教程(bkerndev)-02 准备工作
  4. Fibonacci 数列和 Lucas 数列的性质、推论及其证明
  5. Ubuntu 19.10 发布 | 云原生生态周报 Vol. 24
  6. c++11::std::remove_reference
  7. 案例_(单线程)使用xpath爬取糗事百科
  8. leetcode 刷500道题,笔试/面试稳过吗?谈一谈这些年来算法的学习
  9. netty源码解析(4.0)-26 ByteBuf内存池:PoolArena-PoolSubpage
  10. 基于 HTML5 + Canvas 实现的 PID 可视化系统