c#课后小试3

1.静态类

静态类不能实例化。

静态类是密封的(sealed)不能从它派生(derive)类型。

静态类不能包含非静态成员也不能有构造方法。

C#中没有全局方法,我们可以用静态类储存一些想用的数据。

static class Sclass

{

一些我们需要的静态数据

static A()

{

……

}

}

在主函数中,我门可以这样使用

Sclass.A();

2.析构函数

如果对象要控制非托管(unmanaged)的资源,用完后要显式地(explicitly)释放托管的资源,这时需要析构方法。

如果只有托管(managed)引用,就不需要实现析构方法(destructor)。

与c++中一样,本身存在一个默认的,在使用完后帮你删除类。如果自己想在删除的同时进行一些其他操作,我们可以重写析构函数。

~className()

{

………

}

下图为我在用继承时使用了析构函数。

代码为

namespace ConsoleApplication2
{
    class Program
    {

public class myClassA
        {
            int shuju;
            public myClassA()
            {
                shuju = 0;
                Console.WriteLine("调用构造函数A");
            }

~myClassA()
            {
                Console.WriteLine("调用析构函数A");
            }
        }
        public class myClassB :myClassA
        {
            int shuju;
            public myClassB(int q)
            {
                shuju = q;
                Console.WriteLine("调用构造函数B");
            }

~myClassB()
            {
                Console.WriteLine("调用析构函数B");
            }

}
        static void Main(string[] args)
        {
           
            myClassB b = new myClassB(5);
          
          
          
        }
       
    }
   
}

结果为

同时了解到继承时自上而下,析构时自下而上。

3.参数传递

传递参数时,与c++类似,有值传递和引用传递。传递时什么都不加,为值传递,实际的数据并未改变。引用传递与c++不同,参数前加ref,out.其中out不用初始化数据。

public void GetTime(int h, ref int m, out int s )

{

h = 12;

m = 34;

s = 56;

}

…h1=0;m1=0;

GetTime(h1, ref m1, out s1 );

… h1=0;m1=34;s1=56;

4.封装

用以下代码尝试

class Program
    {

public class myClass
        {
            private int myProperty ;
           public myClass(int q)
            {
                myProperty = q;
            }
           public int MYPROPERTY
            {
                get { return this.myProperty; } 
                set { this.myProperty = value; }

}

}
       
        static void Main(string[] args)
        {

myClass a=new myClass(1);
            Console.WriteLine(a.MYPROPERTY);
            a.MYPROPERTY = 8;
            Console.WriteLine(a.MYPROPERTY);
            Console.Read();
          
          
        }
       
    }

结果 1

8

可以看出,封装成功。成功的用poperty调用修改private类型的数据。

5.继承和多态

与c++中有区别,首先是在子类重写函数时要在函数名前加 override.

另外,c#中有new的问题。

存在new时,如果所用实例是new对应类的类型,则调用该类父类的相关函数。

对于override,所用实例属于什么类,就调用所在类的相关函数。

时间: 2024-08-22 02:05:12

c#课后小试3的相关文章

C#课后小试7

WPF(Windows Presentation Foundation) WPF是用户界面框架,最大的特点是设计与编程分离,使各专业人才更加专注,不用分心. 我们可以通过XML的变形语言--XAML语言来操作. XAML由一些规则(告诉解析器和编译器如何处理XML)和一些关键字组成,但它自己没有任何有意义的元素. 看下列代码 <Window x:Class="HelloWPF.Window1"    xmlns="http://schemas.microsoft.com

c#课后小试4

Interfaces(接口) 这次课程,我们主要学习了C#中的接口的特点及其使用.依我看来,接口与抽象类很像但有所不同,或者说,借口是抽象类的一种升级. interface与abstract class的主要区别:interface可以放置在程序层的任意位置,abstract class只能放在顶端.. 声明接口: public interface IStorable { void Read( ); void Write(object); } 使用接口: public class Documen

C#课后小试8

Stream(数据流) 命名空间:System.IO 我们看一下文件的读写 1.二进制文件 1 //所读取的文件 2 Stream inputStream=File.OpenRead( 3 @"C:\test\source\test1.cs"); 4 //要写入的文件 5 Stream outputStream=File.Openwrite( 6 @"C:\test\source\test1.bak"); 7 8 //创建一个保存字节的缓存 9 byte [] bu

C#课后小试6

LINQ可以很方便的对数据源进行筛选.排序和分组操作. 格式 :from   ……      例:          from customer(范围变量) in customers(数据源) where  ……                      where customer.Firstname=="sadas"  (筛选的条件) select  ……                     select customer     (映射,具体要选的主体或属性) LINQ查询式

C#课后小试5

1.string相关函数 我分别尝试了compare  substring split函数,如上图示. compare函数会比较输入是两个string,然后返回一个int值显示结果. substring可以读取string里的一部分,(开始索引,索引个数). split可以对string按照给出的条件分割. 2.正则表达式 由元字符和字面值组成,用来更方便的管理字符串. 对于该部分大学习我参考了http://www.wangqi.com/n9250c53.aspx 3.ecpection exp

问题 1018: C语言程序设计教程(第三版)课后习题6.8

/******************************************************************** @file Main.cpp @date 2017-05-12 @author Zoro_Tiger @brief 问题 1018: C语言程序设计教程(第三版)课后习题6.8 http://www.dotcpp.com/oj/problem1018.html *************************************************

Redis配置以及通过C#访问小试

首先安装一个Ubuntu14.04的虚拟机用来安装Redis.Ubuntu的Unity在虚拟机里面卡爆了,可以通过如下方法安装传统的Gnome界面: sudo aptitude install gnome-session-fallback 安装完成之后可以在登录的地方选择Gnome界面. Redis的编译和安装在Linux下面非常简单,访问redis.io获得稳定版的源代码.现在是redis-2.8.13.tar.gz 下载完成之后,执行如下命令: tar xzf redis-2.8.13.ta

问题 1041: C语言程序设计教程(第三版)课后习题9.8

/******************************************************************** @file Main.cpp @date 2017-05-28 22:02:55 @author Zoro_Tiger @brief 问题 1041: C语言程序设计教程(第三版)课后习题9.8 http://www.dotcpp.com/oj/problem1041.html ****************************************

问题 1040: C语言程序设计教程(第三版)课后习题9.6

/******************************************************************** @file Main.cpp @date 2017-05-28 21:57:02 @author Zoro_Tiger @brief 问题 1040: C语言程序设计教程(第三版)课后习题9.6 http://www.dotcpp.com/oj/problem1040.html ****************************************