静态 Class 和变量
Static Class and Variables
只是好奇,
如果我有一个静态的 class,我是否还必须将变量定义为静态的,因为我已经说过 class 是静态的?
这更多是出于好奇,在我的静态 class 中,目前我也将我的变量定义为静态;但是,我想知道这是否真的有必要。
我正在使用 C#。
谢谢
如果您正在使用 Java,则不能使用来自静态上下文的非静态变量。
这也取决于您使用的语言(您应该告诉我们)。
但是看看这里:
Java:
Non-static variable cannot be referenced from a static context
C++:
The static keyword and its various uses in C++
希望对您有所帮助:)
是,如果你用static
关键字定义了你的class,你还需要使用static
成员。
是的。来自 MSDN
以下列表提供了静态 class 的主要功能:
- 仅包含静态成员。
- 无法实例化。
- 被封印了。
- 不能包含实例构造函数。
这是一个快速测试的方法。复制以下代码并将其粘贴到您的 IDE (Visual Studio)。然后取消注释这两个注释行中的每一行,一次一个。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StaticTest
{
static class Program
{
/**
* Uncomment one line at a time and compile program.
**/
//public int NonStaticVariable = 0;
//public static int StaticVariable = 0;
static void Main(string[] args)
{
}
}
}
你会注意到对于非静态变量,抱怨:
'StaticTest.Program.NonStaticVariable': cannot declare instance members in a static class
这是因为,在 .NET 中,静态 class 只能包含静态成员。如果您想进一步阅读本文,请遵循此 link:http://msdn.microsoft.com/en-us/library/79b3xss3.aspx
只是好奇,
如果我有一个静态的 class,我是否还必须将变量定义为静态的,因为我已经说过 class 是静态的?
这更多是出于好奇,在我的静态 class 中,目前我也将我的变量定义为静态;但是,我想知道这是否真的有必要。
我正在使用 C#。
谢谢
如果您正在使用 Java,则不能使用来自静态上下文的非静态变量。
这也取决于您使用的语言(您应该告诉我们)。
但是看看这里:
Java: Non-static variable cannot be referenced from a static context
C++: The static keyword and its various uses in C++
希望对您有所帮助:)
是,如果你用static
关键字定义了你的class,你还需要使用static
成员。
是的。来自 MSDN
以下列表提供了静态 class 的主要功能:
- 仅包含静态成员。
- 无法实例化。
- 被封印了。
- 不能包含实例构造函数。
这是一个快速测试的方法。复制以下代码并将其粘贴到您的 IDE (Visual Studio)。然后取消注释这两个注释行中的每一行,一次一个。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StaticTest
{
static class Program
{
/**
* Uncomment one line at a time and compile program.
**/
//public int NonStaticVariable = 0;
//public static int StaticVariable = 0;
static void Main(string[] args)
{
}
}
}
你会注意到对于非静态变量,抱怨:
'StaticTest.Program.NonStaticVariable': cannot declare instance members in a static class
这是因为,在 .NET 中,静态 class 只能包含静态成员。如果您想进一步阅读本文,请遵循此 link:http://msdn.microsoft.com/en-us/library/79b3xss3.aspx