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)
什么是面向对象编程,对于面向对象编程与面向过程编程的解释随处可见,个人认为对面向对象编程解释最好的一个定义是:依赖倒转原则是面向对象编程的标志,面向对象编程是一种思想,无论使用哪一种编程语言,如果在编 ...
随机推荐
- python中bytes类型转换为str类型
使用的原因:基于URL解析报文的时候,要使用str类型,但是提供的确实bytes类型,报错: TypeError: must be str, not bytes 所以就把bytes类型转换为str类型 ...
- Jenkins安装过程
1.安装环境 配置java环境 安装Tomcat 2.将Jenkins.war 包放入Tomcat的webapps目录 3.启动tomcat后,tomcat会解压war包,生成一个jenkins文件夹 ...
- ssh两台主机建立信任关系
A主机(10.104.11.107) B主机(10.104.11.128) A: ssh-keygen -t rsa [root@H0f .ssh]# ssh-keygen -t rsa Gene ...
- java——数组操作
排序.二分查找.复制数组.填充 package follow_pack; import java.util.Arrays; import java.text.DecimalFormat; public ...
- Linux环境搭建禅道项目管理工具
1.开源版安装包下载 [root@iZbp ~]# wget http://dl.cnezsoft.com/zentao/9.0.1/ZenTaoPMS.9.0.1.zbox_64.tar.gz 2. ...
- JavaSE---对象序列化
1.对象序列化机制 允许把内存中的Java对象转换成平台无关的二进制流,从而可以将二进制流持久保存到磁盘 或 在网络中直接传输: (目的:使得对象可以脱离程序的运行而独立存在) package com ...
- python 循环类型
循环: while死循环: important time while 1== 1 print('ok') #当1==1条件成立时,会一直循环输出ok. 因为条件永远成立,所以是死循环 ...
- git使用笔记-提高篇-重置揭密
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86 重置揭密 在继续了 ...
- 性能测试工具Jmeter01-简介
Jmeter介绍: Apache JMeter是Apache组织的开放源代码项目,是一个纯Java桌面应用,用于压力测试和性能测试.最初被设计用于Web应用测试后来扩展到其它测试领域 Jmeter有啥 ...
- EditPlus编写PHP使用技巧
1,建立php模板 方法:在EditPlus的文件目录下,新建template.php文件,写入<?php ?>内容保存,再在editplus的模板中 载入应用即可. 2,建立函数自动补齐 ...