静态成员和非静态成员的区别
编辑: 面试啦 发布时间: 2023-02-01 03:08:02
答:静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问
不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问
一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值
静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example01
{
class Program
{
class Class1
{
public static String staticStr = “Class”;
public String notstaticStr = “Obj”;
}
static void Main(string[] args)
{
//静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值
Console.WriteLine(“Class1′s staticStr: {0}”, Class1.staticStr);
Class1 tmpObj1 = new Class1();
tmpObj1.notstaticStr = “tmpObj1″;
Class1 tmpObj2 = new Class1();
tmpObj2.notstaticStr = “tmpObj2″;
//非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值
Console.WriteLine(“tmpObj1′s notstaticStr: {0}”, tmpObj1.notstaticStr);
Console.WriteLine(“tmpObj2′s notstaticStr: {0}”, tmpObj2.notstaticStr);
Console.ReadLine();
}
}
}
结果:
Class1′s staticStr: Class
tmpObj1′s notstaticStr: tmpObj1
tmpObj2′s notstaticStr: tmpObj2
不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过对象进行访问
一个类的所有实例的同一静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值
静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等
示例:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example01
{
class Program
{
class Class1
{
public static String staticStr = “Class”;
public String notstaticStr = “Obj”;
}
static void Main(string[] args)
{
//静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值
Console.WriteLine(“Class1′s staticStr: {0}”, Class1.staticStr);
Class1 tmpObj1 = new Class1();
tmpObj1.notstaticStr = “tmpObj1″;
Class1 tmpObj2 = new Class1();
tmpObj2.notstaticStr = “tmpObj2″;
//非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值
Console.WriteLine(“tmpObj1′s notstaticStr: {0}”, tmpObj1.notstaticStr);
Console.WriteLine(“tmpObj2′s notstaticStr: {0}”, tmpObj2.notstaticStr);
Console.ReadLine();
}
}
}
结果:
Class1′s staticStr: Class
tmpObj1′s notstaticStr: tmpObj1
tmpObj2′s notstaticStr: tmpObj2
词条:c面试题
上一篇:通用C#笔试题附答案 下一篇:StringBuilder和String的区别
面试题库导航
- C++面试题
- JAVA面试题
- Oracle面试题
- MySQL面试题
- Linux面试题
- 网络工程师面试题
- 网管面试题
- 软件工程师面试题
- PHP面试题
- .net面试题
- 软件测试面试题
- EJB面试题
- Spring面试题
- Javascript面试题
- Python面试题
- QTP面试题
- Servlet面试题
- J2EE面试题
- Database面试题
- ASP面试题
- Unix面试题
- Loadrunner面试题
- 通信面试题
- 嵌入式面试题
- Ruby面试题
- Delphi面试题
- Mobile开发面试题
- SOA面试题
- JAVA面试题面试题
- 研发工程师面试题
- 软件架构师面试题
- 系统工程师面试题
- Android面试题
- JAVA程序员
- C#面试题