C sharp #003# 面向对象编程基本构件
饮水思源:金老师的自学网站
索引
类的属性
字段+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# 面向对象编程基本构件的更多相关文章
- JAVA的面向对象编程--------课堂笔记
面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象. 能够做什么 ...
- JAVA的面向对象编程
JAVA的面向对象编程 面向对象主要针对面向过程. 面向过程的基本单元是函数. 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 全部的事物都有两个方面: 有什么(属性):用来描写叙 ...
- Go语言基础之面向对象编程中
1 Golang面向对象编程基本介绍 Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OPP语言不一样,随后分别介绍Golang对面向对象编程的三大特性是如何实现的. 2 ...
- angular2系列教程(六)两种pipe:函数式编程与面向对象编程
今天,我们要讲的是angualr2的pipe这个知识点. 例子
- 带你一分钟理解闭包--js面向对象编程
上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...
- PHP 面向对象编程和设计模式 (1/5) - 抽象类、对象接口、instanceof 和契约式编程
PHP高级程序设计 学习笔记 2014.06.09 什么是面向对象编程 面向对象编程(Object Oriented Programming,OOP)是一种计算机编程架构.OOP 的一条基本原则是计算 ...
- Delphi_09_Delphi_Object_Pascal_面向对象编程
今天这里讨论一下Delphi中的面向对象编程,这里不做过多过细的讨论,主要做提纲挈领的描述,帮助自己抓做重点. 本随笔分为两部分: 一.面向对象编程 二.面向对象编程详细描述 ------------ ...
- python基础-面向对象编程
一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程 2.函数式编程 3.面向对象编程 二.编程进化论 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 ...
- 面向对象编程(OOP)
什么是面向对象编程,对于面向对象编程与面向过程编程的解释随处可见,个人认为对面向对象编程解释最好的一个定义是:依赖倒转原则是面向对象编程的标志,面向对象编程是一种思想,无论使用哪一种编程语言,如果在编 ...
随机推荐
- pl/sql declare loop if
-- 1.判断表是否存在,如果存在则drop表 -- 2.创建表 -- 3.插入1W条数据 -- 4.每1K条commit一次 declare v_table ):='STUDENT'; --表名 v ...
- Docker & ASP.NET Core 教程
第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 第四篇:容器间的连接 第五篇: Docker & ASP.NET Core (5):Docker Compose AS ...
- java——ArrayList 的存在有什么意义?
好像所有的数据类型都可以用比如 TreeMap[] int[] Object[] 这种形式来创建自己的数组,那么ArrayList存在的意义是什么呢? 我只能想到这种:ArrayList可以存储多种 ...
- elasticsearch 插件 大全
本文使用的elasticsearch版本:1.7.3 推荐几款比较常用的elasticsearch插件 1.集群监控插件 bigdesk node cluster 2.集群资源查看和查询插件 kopf ...
- SQL智能提示插件——SQLPrompt
1.安装SQLPrompt,直接点击下一步即可,然后打开SQL Server 在菜单栏找到SQLPrompt选项注册该软件 2.先断开网络,然后运行注册机,将注册吗复制到序列号的地方,将两个勾选的复选 ...
- Head First 设计模式笔记(模版方法模式)
1.定义: 在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中.模版方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤. 2.类图: 3.说明: 模版方法可以理解为一个方法里面包 ...
- android Activity启动过程(一)从startActivty开始说起
从启动startActivity开始说起 MainActivity.startActivity() Activity.startActivity() Activity.startActivityFor ...
- LeetCode 881.救生艇(C++)
第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. 返回载到每一个人所需的最小船数.(保证每个人都 ...
- 【转】jsoup的使用
Jsoup的使用 jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法 ...
- C# FTPHelper帮助类
网上的FTPHelper类感觉用起来不方便,而且代码的质量也不高,因此自己重新写了一个FTPHelper.此文之前是发布在我的CSDN博客中的,现在转过来. 主要就是借鉴了DbHelper的Creat ...