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)
什么是面向对象编程,对于面向对象编程与面向过程编程的解释随处可见,个人认为对面向对象编程解释最好的一个定义是:依赖倒转原则是面向对象编程的标志,面向对象编程是一种思想,无论使用哪一种编程语言,如果在编 ...
随机推荐
- centos7-网络与防火墙常用命令
1.网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO="static" IPADDR=192.168.163 ...
- SSMS 远程连接SERVER 设置 - Unable to connect to SQL Server instance remotely
问题描述: 新装了一台SERVER,在SERVER本地打开SSMS链接sever,一且正常.但是用我自己local去链接的时候出现以下错误. A network-related or instance ...
- python django 基本测试
http://www.runoob.com/django/django-model.html django-admin startapp TestModel /models.py from djang ...
- oracle数据库代码块
--申明变量.游标 declare a ):'; --逻辑 begin INSERT into TEMP_DSF.TEST VALUES (a); end; tips:mysql不支持匿名块.仅在存储 ...
- 生成jvm快照文件
原文:https://blog.csdn.net/jijianshuai/article/details/79128033 -Xmx20m -Xms5m -XX:HeapDumpOnOutofMem ...
- Android NDK开发 字符串(四)
几个概念首先要明确: java内部是使用16bit的unicode编码(UTF-16)来表示字符串的,无论中文英文都是2字节: jni内部是使用UTF-8编码来表示字符串的,UTF-8是变长编码的un ...
- SQL Server 硬件和软件要求
1. 2.
- vue脚手架 && 实例
什么是vue脚手架? 即可以快速构建vue项目的工具,通过它,我们可以将vue项目所需要的文件等安装完成. 为什么要是用vue脚手架,优点何在? 因为创建一个vue项目需要很多的依赖,文件的设置等,而 ...
- Java学生管理系统(连接数据库查询)超详细
这几天逼着交Java,借鉴各位师傅的做出来这么个简陋的东西,各位大师傅不要笑我.(学都没有学过Java的我,QAQ~) 下面针对的都是SQL Server系列的连接,如果你使用MySQL那么不必看关于 ...
- pat1100. Mars Numbers (20)
1100. Mars Numbers (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue People o ...