饮水思源:金老师的自学网站

类的属性

字段+get/set方法=属性

(之前都是把字段和属性混着用。。)

经典写法:

using System;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var x = new MyTest();
x.MyValue = "hello";
Console.WriteLine(x.MyValue);
// => hello --2019/5/1 10:12:49
Console.ReadKey();
}
} // 默认为internal,程序集内可调用
// 如果是public,那就是公共的了,任何程序集都可以去调用到它
public class MyTest
{
// 属性的经典实现方法
private string _myValue = "";
public string MyValue
{
get
{
return _myValue;
}
set
{
_myValue = value + " --" + DateTime.Now;
}
} }
}

自动实现属性(编译器会自动添加一个私有字段):

    class Program
{
static void Main(string[] args)
{
var x = new MyTest();
x.MyValue = "hello";
Console.WriteLine(x.MyValue);
// => hello
Console.ReadKey();
}
} public class MyTest
{
public string MyValue
{
get;
set
;
}
}

其它玩法(来自原PPT截图):

简化字段/属性的初始化

using System;
using System.Collections.Generic; namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var x = new MyTest()
{
MyValue = "hello"
}; // 不用专门去写构造器的,但是没法直接设置对象的私有字段。
Console.WriteLine(x.MyValue); var objs = new List<MyTest>{
new MyTest { MyValue = "Hello" },
new MyTest { MyValue = "World" }
}; // 直接初始化集合对象 // => hello
Console.ReadKey();
}
} public class MyTest
{
private string aPrivateValue; public string MyValue
{
get;
set;
}
}
}

命名空间

类似于Java里的package,允许嵌套

using ConsoleApp1.InnerNamespace;
using System; namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
var x = new MyTest()
{
MyValue = "hello"
}; // 不用专门去写构造器的,但是没法直接设置对象的私有字段。
Console.WriteLine(x.MyValue);
// => hello
Console.ReadKey();
}
} namespace InnerNamespace
{
public class MyTest
{
private string aPrivateValue; public string MyValue
{
get;
set;
}
}
}
}

程序集

基本概念(拷贝自PPT):

  • .NET程序的基本构造块是“程序集(Assembly)” 。
  • 程序集是一个扩展名为.dll或.exe的文件。
  • .NET Framework中的各个类,存放在相应的程序集文 件中。

定义自己的程序集(创建一个类库项目,编译成ddl):

namespace MyDdl1
{
public class MathOpt
{
public static int add(int a, int b)
{
return a + b;
}
}
}

引用自己的程序集(引用ddl):

using MyDdl1;
using System; namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int result = MathOpt.add(, );
Console.WriteLine(result); // => 3
}
}
}

C sharp #003# 面向对象编程基本构件的更多相关文章

  1. JAVA的面向对象编程--------课堂笔记

    面向对象主要针对面向过程. 面向过程的基本单元是函数.   什么是对象:EVERYTHING IS OBJECT(万物皆对象)   所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么 ...

  2. JAVA的面向对象编程

    JAVA的面向对象编程 面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 全部的事物都有两个方面: 有什么(属性):用来描写叙 ...

  3. Go语言基础之面向对象编程中

    1 Golang面向对象编程基本介绍 Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OPP语言不一样,随后分别介绍Golang对面向对象编程的三大特性是如何实现的. 2 ...

  4. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  5. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  6. PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程

    PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...

  7. Delphi_09_Delphi_Object_Pascal_面向对象编程

    今天这里讨论一下Delphi中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...

  8. python基础-面向对象编程

    一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程 2.函数式编程 3.面向对象编程 二.编程进化论 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 ...

  9. 面向对象编程(OOP)

    什么是面向对象编程,对于面向对象编程与面向过程编程的解释随处可见,个人认为对面向对象编程解释最好的一个定义是:依赖倒转原则是面向对象编程的标志,面向对象编程是一种思想,无论使用哪一种编程语言,如果在编 ...

随机推荐

  1. Filter责任链模式

    Filter责任链的创建 org.apache.catalina.core.ApplicationFilterFactory#createFilterChain,  此方法是被org.apache.c ...

  2. 导入json文件报错,TypeError expected string or buffer

    导入json文件报错,TypeError expected string or buffer 原因:用字符串赋值后,python会把双引号转换为单引号 import json data = [{&qu ...

  3. 转 Comparison of Red Hat and Oracle Linux kernel versions and release strings

    Originally derived from Red Hat Enterprise Linux (RHEL), Oracle Linux (OL) contains minor difference ...

  4. 20篇关于商品管理系统和uml技术的相关文献

    1.基于UML技术的商品管理系统设计与实现 2.UML技术在行业资源平台系统建模中的应用 3.基于JSP的商品信息管理系统设计与开发 4.基于UML技术的客户关系管理系统实现 5.商品管理系统 6.基 ...

  5. maya2015无法安装卸载激活失败

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  6. mysql中添加中文存储和显示功能

    1. 在 /etc/mysql/my.cnf中添加 [mysqld]character-set-server=utf8 [client]default-character-set=utf8 2. 检查 ...

  7. [转]jquery的ajax交付时“加载中”提示的处理方法

    本文转自:http://www.educity.cn/wenda/77121.html jquery的ajax提交时“加载中”提示的处理方法    方法1:使用ajaxStart方法定义一个全局的“加 ...

  8. 使用Xshell连接服务器

    转载原地址:http://www.server110.com/linux/201308/830.html 1)关于Xshell 网上更多的资料里提到的SSH客户端是putty,因为简单.开源.免费.但 ...

  9. Spark Streaming简介

    离线计算和实时计算对比 1)数据来源 离线:HDFS历史数据 数据量比较大 实时:消息队列(Kafka),实时新增/修改记录过来的某一笔数据 2)处理过程 离线:MapReduce: map+redu ...

  10. EditPlus编写PHP使用技巧

    1,建立php模板 方法:在EditPlus的文件目录下,新建template.php文件,写入<?php ?>内容保存,再在editplus的模板中 载入应用即可. 2,建立函数自动补齐 ...