gpt4 book ai didi

c# - 理解 C# 中的静态

转载 作者:太空狗 更新时间:2023-10-30 00:02:10 25 4
gpt4 key购买 nike

我正在学习 C#,但我无法理解 static 关键字。

假设我有以下代码:

using System;
using System.IO;
using System.IO.Ports;

class PortThing
{
SerialPort port;

void InitPort()
{
if(!File.Exists("/dev/whatever"))
{
System.Console.WriteLine("Device not found.");
port = null;
}
//else port = something
}

public static void Main(string[] args)
{
InitPort();
System.Console.WriteLine("Done.");
}
}

据我所知,静态方法是属于类而不是属于该类的对象的方法。因此静态方法不能引用非静态方法/字段,因为它们需要实例化一个类。

编译器提示 Main() 调用 InitPort() 并希望将其设为静态。我可以这样做,但这需要将 port 设为静态字段。按照这种思路,一切最终都将是静态的。

我哪里错了?

最佳答案

你做对了。静态方法只能访问静态成员。非静态成员需要类的实例才能访问它们。所以你可以这样做:

public static void Main(string[] args)
{
new PortThing().InitPort();
System.Console.WriteLine("Done.");
}

通过这种方式,您可以在给定的类实例上调用实例方法 InitPort,并且可以使 port 字段保持非静态。

关于c# - 理解 C# 中的静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4509450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com