博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习C#(一)
阅读量:7040 次
发布时间:2019-06-28

本文共 5599 字,大约阅读时间需要 18 分钟。

赶紧好好学学自己的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 = 0;        public void print()        {            Console.WriteLine(val);        }    }    class Inherit_1 : Inherit    {        public int val = 3;        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 = 0;        public void print()        {            Console.WriteLine(val);        }    }    class Inherit_1 : Inherit    {        public new int val = 3;//只是多加了一个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 = 0;        public void print()        {            Console.WriteLine(val);        }    }    class Inherit_1 : Inherit    {        public int val = 3;        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("123");        }    }    class Inherit_1 : Inherit    {        public override void print()//重写父类的虚方法        {            Console.WriteLine("456");        }    }    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("123");        }    }    class B : A    {        public override void print()//重写父类的虚方法        {            Console.WriteLine("456");        }    }    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();        }    }}

洗澡,吃饭....................

转载地址:http://zkaal.baihongyu.com/

你可能感兴趣的文章
开源技术“打进”好莱坞,学术软件基金会成立
查看>>
Android项目实战(十四):TextView显示html样式的文字
查看>>
你真的了解Python的字符串吗?
查看>>
创建ORC结果表
查看>>
从普通程序员到身价过百亿:追求长期价值的耐心,决定了你能走多远
查看>>
比原链Bytom错误码一览
查看>>
Windows CMD中的findstr命令详解
查看>>
破天荒!苹果终于对 MacBook Air 大更新,还有全新 iPad Pro 和 Mac mini
查看>>
肿瘤研发机构NMS启动新一轮融资,并将赴港上市
查看>>
【分享】学Java的必须练手的200个Java虚拟机相关的例子
查看>>
Web SSM 入坑
查看>>
KM算法入门
查看>>
使用 pymysql 操作MySQL数据库
查看>>
OCCI编程接口介绍
查看>>
做一个统计单词数目的Atom插件
查看>>
ios 事件链 和 响应链 初步理解
查看>>
Confluence 6 SQL Server 测试你的数据库连接
查看>>
React-Native 学习第二天:初识RN的代码
查看>>
《Pandas Cookbook》第06章 索引对齐
查看>>
步态识别领域现准独角兽 银河水滴完成1亿元Pre-A轮融资
查看>>