C# 静态类 考考你

判断题,下面描述哪些正确,哪些错误

  1. 静态类必须直接从基类System.Object 派生
  2. 静态类不能实现任何接口
  3. 静态类只能定义静态成员(字段,方法,属性和事件)
  4. 静态类不能作为字段,方法参数或局部变量使用
  5. 静态类不能继承静态类
  6. 静态类不能应用于结构(值类型)
  7. 静态类常存放扩展方法
  8. 如果编程语言不支持静态类的定义,那么请把类定义为abstract,sealed和把类的实例构造函数定义为私有
  9. 静态方法调用不需要实例化静态类,直接使用类型名调用该方法

答案:

  1. 正确 ,继承只适用于对象,你不能创建静态类的实例。
  2. 正确,因为只有使用类的实例时,才可调用类的接口方法。
  3. 正确,静态类中的任何实例成员编译器会报错。
  4. 正确,因为它们代表实例的变量。
  5. 正确,因为静态类标记为abstract 和 sealed
  6. 正确,因为结构(值类型)会被实例化
  7. 正确,静态类广泛用于提供一些访问其他操作的快捷方式,存放扩展方法,或者以非面向对象的方式来提取一些功能(例如System.Enviroment)
  8. 正确,例如.net1.0 不支持静态类,则这样处理,实例构造函数定义为私有则无法构造实例
  9. 正确,静态类不需要实例化,直接使用类名称调用方法

参考书目:

CLR via C#(第四版)

NET设计规范 约定、惯用法与模式(第二版)

时间: 2024-10-10 23:53:48

C# 静态类 考考你的相关文章

几种查询方法(lambda Linq Enumerable静态类方式)

1.需要一个数据源类: using System; using System.Collections.Generic; namespace Linq { public class Student { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } public class Data { public static List<Student> studentLi

C#基础——全局静态类中的静态类变量的设置

前言 今天在设计一个系统用户管理界面的时候,出现了一个问题: 由于要在不同窗体之间传递数据,所以想到了要设置全局变量,比如一个用户有属性,ID,UserName,UserPwd和UserPower,为了简便,设定了一个Manager的类,管理这四个属性.然后设置了一个静态类,ModuleParas,有一个静态类变量manager. 结果出现了可访问性不一致的问题. 代码 1 public class Manager 2 { 3 public int ID; 4 public string Use

关于C#的静态类和静态构造函数

静态构造函数是C#的一个新特性,其实好像很少用到.不过当我们想初始化一些静态变量的时候就需要用到它了.这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次.也就是在创建第一个实例或引用任何静态成员之前,由.NET自动调用. class SimpleClass { // Static constructor static SimpleClass() { // } } 在使用静态构造函数的时候应该注意几点: 1.静态构造函数既没有访问修饰符,也没有参数.因为是.NET调用的

C# 静态类与非静态类、静态成员的区别

静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类:其次,它防止在类的内部声明任何实例字段或方法. 静态类是自C# 2.0才引入的,C# 1.0不支持静态类声明.程序员必须声明一个私有构造器.私有构造器禁止开发者在类的范围之外实例化类的实例.使用私有构造器的效果与使用静态类的效果非常相似.两者的区别在于,私有构造器方式仍然可以从类的内部对

13.C#分部类型和静态类(七章7.1-7.2)

再大的东西不去找,也就没了,再小的知识不去记,也就忘了.今天来写一写C#中的分部类型和静态工具类,这些两个概念可能在我们的日常使用过程中都使用过,可能大家对这些内容觉得这些不是应该有的东西嘛,那就来复习一下吧. 分部类型,个人理解是对同一事物在两个不同空间的描述,编译器将组织我们编写的在不同文件中代码,组合成一个完整的描述.我们不能在一个文件中编写成员的一半代码,而把另外一半代码放到另外一个文件中,每个独立的成员必须完整地位于所处的文件中.如有一个Map类,成员属性放在Map0.cs中,而成员方

静态类

namespace ConsoleApplication1 { static class A { private static int b=1; public static void f() { Console.WriteLine("{0}",b); } static A() { b = 2; } } class Program { static void Main(string[] args) { //Console.WriteLine(A.b );b私有成员 A.f();//通过公

静态类和非静态类的主要区别

如有雷同,不胜荣幸,若转载,请注明 主要区别在于静态类不能实例化,静态类编译器能够执行检查确保不是偶然的添加实例成员,C#编译器会自动把它标记为sealed,静态类中不能创建非静态的方法.即静态方法中只能创建静态方法,但在非静态类中可以调用静态方法 静态类的主要特性: 1:仅包含静态成员. 2:无法实例化. 3:是密封的. 4:不能包含实例构造函数. 5:非静态类可以包含静态的方法.字段.属性或事件: 6:静态方法和属性不能访问其包含类型中的非静态字段和事件 7:静态方法只能被重载,而不能被重写

OO 普通类与静态类的区别

普通类与静态类的区别 普通类与静态类的区别 一.普通类: 1.可以实例化,即可以new; 2.可以继承: 二.静态类:(静态类本质就是 abstract+sealed类) 1.不能被实例化:(抽象的)反编译查看 2.不能被继承:(密封的)反编译查看 3.只能有静态成员:

利用反射获取静态类的静态属性值(已知属性名称的字符串表示)

列如获取Phone属性的值 typeof(ExcelColumnName).GetProperty(“Phone”).GetValue(null, null)//ExcelColumnName是静态类 ExcelColumnName类如下: 1 /// <summary> 2 /// 要上传的excel所包含的列 3 /// </summary> 4 public static class ExcelColumnName 5 { 6 public static string Pho