学习C#(一)
赶紧好好学学自己的C#,,要不然要给做的东西说拜拜了,,,时间紧迫,,,真担心会食言.....................
在C#中以为只要类有构造方法,,,,原来结构也有
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 结构
{
class Program
{
public struct Rect
{
public double width;
public double hight;
public Rect(double x,double y)//构造方法
{
width = x;
hight = y;
}
public double Area()
{
return width * hight;
}
}
static void Main(string[] args)
{
Rect rect;
rect.width = 5;
rect.hight = 6;
Console.WriteLine(rect.Area()); Rect re = new Rect(2,3);//使用结构的构造方法
Console.WriteLine(re.Area()); Console.ReadKey();
}
}
}
get set
假如说定义一个变量,A,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace getset
{
class Program
{
public class class1
{
int A; public static void Main()
{
class1 cla = new class1();
cla.A = 10; Console.WriteLine(cla.A); Console.ReadKey();
} }
}
}
现在这个变量需要做一下限制,,,对其赋值时不能大于65536,,怎么在赋值的时候判断这个变量是不是大于了65536,如果大于了给点提示
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace getset
{
class Program
{
public class class1
{
int a;
public int A
{
get
{
return a;
}
set
{
if (value >= 65536)
{
Console.WriteLine("This value greater than the 65536");
}
else
{
a = value;
}
}
}
public static void Main()
{
class1 cla = new class1();
cla.A = 666666;
Console.WriteLine(cla.A);
Console.ReadKey();
}
}
}
}
多个CS文件
命名空间不一样的
关于继承----继承者和被继承者里面的东西一样
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class Inherit
{
public int val = ; public void print()
{
Console.WriteLine(val);
}
}
class Inherit_1 : Inherit
{
public int val = ; public void print()
{
Console.WriteLine(val);
}
}
class Program
{
static void Main(string[] args)
{
Inherit inher = new Inherit();
inher.print(); Inherit_1 inher_1 = new Inherit_1();
inher_1.print(); Console.ReadKey();
} }
}
会有一个提示
当派生类从基类继承时,它会获得基类的所有方法、字段、属性和事件。若要更改基类的数据和行为,您有两种选择:可以使用新的派生成员替换基成员,或者可以重写虚拟的基成员。
上面的基类(父类)没有虚方法,,,,,所以可以选择第一种,,,,,使用新的派生成员替换基类成员
使用新的派生成员替换基类的成员需要使用 new 关键字。如果基类定义了一个方法、字段或属性,则 new 关键字用于在派生类中创建该方法、字段或属性的新定义。new 关键字放置在要替换的类成员的返回类型之前
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class Inherit
{
public int val = ; public void print()
{
Console.WriteLine(val);
}
}
class Inherit_1 : Inherit
{
public new int val = ;//只是多加了一个new public new void print()
{
Console.WriteLine(val);
}
}
class Program
{
static void Main(string[] args)
{
Inherit inher = new Inherit();
inher.print(); Inherit_1 inher_1 = new Inherit_1();
inher_1.print(); Console.ReadKey();
} }
}
其实结果一样,
一句话,如果子类继承了父类,子类和父类中有一个相同的方法,,,子类调用这个方法时默认先在子类中找,,,如果子类没有才会在父类中找
其实也可以这样写
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class Inherit
{
public int val = ; public void print()
{
Console.WriteLine(val);
}
}
class Inherit_1 : Inherit
{
public int val = ; public void print()
{
Console.WriteLine(val);
}
}
class Program
{
static void Main(string[] args)
{
Inherit_1 inher_1 = new Inherit_1();//子类
inher_1.print(); Inherit inher = (Inherit)inher_1;//父类--强制转换
inher.print(); Console.ReadKey();
} }
}
Inherit_1 inher_1 = new Inherit_1();//子类
inher_1.print();//调用的是子类的方法 Inherit inher = (Inherit)inher_1;//父类--将派生类的实例强制转换为基类的实例--然后赋值
inher.print();//调用的是父类的方法
为了使派生类的实例完全接替来自基类的类成员,基类必须将该成员声明为虚拟的。这是通过在该成员的返回类型之前添加 virtual 关键字来实现的。然后,派生类可以选择使用override 关键字而不是 new,将基类实现替换为它自己的实现
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class Inherit
{
public virtual void print()//父类中用virtual关键字说明这个方法是一个虚方法
{
Console.WriteLine("");
}
}
class Inherit_1 : Inherit
{
public override void print()//重写父类的虚方法
{
Console.WriteLine("");
}
}
class Program
{
static void Main(string[] args)
{
Inherit inher1 =new Inherit();//直接新建父类对象
inher1.print();//调用父类方法 Inherit_1 inher_1 = new Inherit_1();//新建子类对象
inher_1.print();//调用子类方法 Inherit inher = (Inherit)inher_1;//强制转换为父类.....还是不行的
inher.print();//还是调用子类方法 Console.ReadKey();
}
}
}
主要看打印
如果要停止这个虚拟方法,,,
让这个方法不是虚的了,,要用 sealed
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace ConsoleApplication1
{
class A
{
public virtual void print()//父类中用virtual关键字说明这个方法是一个虚方法
{
Console.WriteLine("");
}
}
class B : A
{
public override void print()//重写父类的虚方法
{
Console.WriteLine("");
}
}
class C : B
{
public override void print()//重写父类的虚方法
{
base.print();//已替换或重写某个方法或属性的派生类仍然可以使用基关键字访问基类的该方法或属性
//Console.WriteLine("789");
}
} class Program
{
static void Main(string[] args)
{
C c = new C();
c.print(); Console.ReadKey();
}
}
}
洗澡,吃饭....................
学习C#(一)的更多相关文章
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- Unity3d学习 制作地形
这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
随机推荐
- ThinkPHP5+Layui实现图片上传加预览
html代码 <div class="layui-upload"> <button type="button" class="lay ...
- lamp配置多个虚拟站点
在同一ip下添加多个域名站点! 1.查看ip 命令:ifconfig 2.添加域名 命令:vi /etc/hosts 输入域名:如 192.168.160.127 www.test.com 192 ...
- 走通Django的基本流程
工程目录及文件的说明 manage.py:一个命令行工具,可以使我们用多种方式对Django项目进行交互 __init__.py:一个空文件,它告诉Python这个文件的上级目录应该看做一个pytho ...
- JS--我发现,原来你是这样的JS(三)(基础概念--灵魂篇)
一.介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第三篇(灵魂篇介绍),有着剩下的第三章的知识内容. 红宝书这本书可以说是难啃的,要看完不容易,挺厚的,要看懂更不容易,要熟练js ...
- ViewPager实现Recycle机制和响应notifyDataSetChanged
1.目标 主界面要求水平移动翻页效果,每次只能翻一页,可以翻无数页. 2.实现思路 针对"每次只能翻一页"这个要求,简单使用SDK的话只有用ViewPager.ViewPager的 ...
- 浅析ARM公司在物联网领域的战略布局
From: http://www.cnblogs.com/yefanqiu/p/3447769.html 浅析ARM公司在物联网领域的战略布局 随着ARM芯片的出货量越来越多,自信满满的ARM公司统一 ...
- create-react-app脚手架的安装和目录结构介绍
1.对脚手架的初步了解 编程领域中的“脚手架”指的是能够快速搭建项目“骨架”的一类工具,例如大多数的React项目都有src,public,webpack配置文件等等,而src目录中又包含compon ...
- selenium 校验文件下载成功
转自: http://www.seleniumeasy.com/selenium-tutorials/verify-file-after-downloading-using-webdriver-jav ...
- Python学习--Selenium模块简单介绍(1)
简介及运行流程 Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozi ...
- Python实例---beautifulsoup小Demo
豆瓣 # coding:utf - 8 from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen( ...