嫣牛博网,雪mm倒立,自由泳换气
任何项目中都会使用到静态类、静态方法、静态成员和实例成员了。那么这几个名词到底有哪些区别呢?
静态成员:静态成员通常和类是相关联的。它可以作为类中公有的变量,不依赖特定对象的存在。通常我们在访问它们的时候很简单,直接通过类名加点操作符再加变量名来进行操作。
实例成员:实例成员通过和对象是相关联的。一般情况下,我们都是对类的实例化来进行访问操作。如果实例不存在,那么也就无法访问实例成员对象。
所以实例成员的存在必须要有对象实例的存在,如果对象实例都不存在了,那么就将无法访问;而静态成员只是依赖于类的存在与否,也就无需声明和实例化对象了。
如下方这段示例:
class Program
{
static void Main(string[] args)
{
MyStaticText.MyStaticMethod(); //静态方法调用
MyStaticText myStaticText = new MyStaticText();
myStaticText.MyExampleMethod(); //实例方法调用
Console.ReadKey();
}
}
class MyStaticText
{
private int exampleInt = 5;
private static int staticInt = 6;
public static void MyStaticMethod()
{
Console.WriteLine("开始调用静态方法:");
MyStaticText myStaticText = new MyStaticText();
myStaticText.MyExampleMethod();
Console.WriteLine(staticInt);
Console.WriteLine("结束调用静态方法:");
}
public void MyExampleMethod()
{
Console.WriteLine(exampleInt);
}
}
static class MyStaticClassText
{
public static int GetStuNo()
{
return 1;
}
public static string GetStuName()
{
return "Jim";
}
}
最后的输出结果为:
我们知道,对于类有很多修饰符,如public
,同时,类也可以声明为static
,表示它仅可以包含静态成员。不能实例化来创造类的实例。比方说,在有些特定业务中,不需要操作实例数据也不与代码中特定对象关联。那么此时,就需要使用静态类来包含特定的方法。
静态类的主要功能如下:
static
修饰。sealed
标记。项目中使用静态类的优点在于,对于静态类的创建,编译器能够执行检查以确保不会偶然的添加实例成员。同时,静态类时密封的,因此也不允许被继承。
如下方代码示例:
static class MyStaticClassText
{
public static int GetStuNo()
{
return 1;
}
public static string GetStuName()
{
return "Jim";
}
}
对于一个类中的静态成员和非静态成员到底有哪些区别呢?
static
关键字修饰,而非静态成员可以不需要。根据上述内容,下面示例代码的输出是多少呢?
class Program
{
private static int i = GetNum();
private static int num = 10;
int j = GetNum();
private static int GetNum()
{
return num;
}
static void Main(string[] args)
{
Console.WriteLine("i={0}", i);
Program program = new Program();
Console.WriteLine("j={0}", program.j);
Console.WriteLine("i={0}", i);
Console.ReadKey();
}
}
输出结果为:
以上就是对静态方法、静态成员、静态类和实例成员的比较。有不对的地方请大家指正或者一起交流。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Net Core Web Api项目与在NginX下发布的方法
asp.net core3.1 引用的元包dll版本兼容性问题解决方案
IdentityServer4实现.Net Core API接口权限认证(快速入门)
ASP.NET Core MVC通过IViewLocationExpander扩展视图搜索路径的实现
网友评论