在C#中编程时,经常使用关键字const,readonly和static。 但是,尽管这些关键字具有重要的区别,但它们也具有相似之处,有时很难知道何时使用它们。 本文讨论了C#中的const,static和readonly关键字,它们如何进行比较以及如何在C#应用程序中使用它们。
若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019 。
[ 同样在InfoWorld上:Visual Studio Code与Visual Studio:如何选择 ]
在Visual Studio 2019中创建控制台应用程序项目
首先,让我们在Visual Studio中创建一个.NET Core控制台应用程序项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建一个新的.NET Core控制台应用程序项目。
- 启动Visual Studio IDE。
- 点击“创建新项目”。
- 在“创建新项目”窗口中,从显示的模板列表中选择“控制台应用程序(.NET Core)”。
- 点击下一步。
- 在接下来显示的“配置新项目”窗口中,指定新项目的名称和位置。
- 单击创建。
这将在Visual Studio 2019中创建一个新的.NET Core控制台应用程序项目。在本文的后续部分中,我们将使用该项目来说明C#中const,readonly和static关键字的用法。
在C#中使用const关键字
C#中的const(读取:常量)关键字用于定义常量变量,即,其值在程序生存期内不会更改的变量。 因此,必须在声明常量时为常量赋值。
常数变量的此值也称为“编译时”值。 使用const关键字声明的变量也称为编译时常量。 应当注意,常数是不可变的,即,分配给常数的值以后不能更改。
以下代码段说明了如何使用C#中的const关键字定义编译时常量。
const string connectionString = "Specify your database connection string here.";
请注意,您必须在定义常量变量时为其赋值。 还要注意,您不能使用const关键字创建常量对象。 const关键字只能应用于原始数据类型(例如int,float,char和booleans)和字符串。 让我们通过示例了解const的用法。
考虑以下名为Author的类。 为了使它简单,我们将只为Author类提供一些属性。
public class Author
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
}
现在,如果您尝试使用const关键字创建Author类的常量对象,您将看到下面的图1所示的编译错误。
此错误表明赋值运算符的右侧应具有一个常数值,以满足表达式。 因为语句new Author()
不是常量,所以赋值无效,因此会出错。
在C#中使用readonly关键字
readonly关键字可用于将变量或对象定义为只读。 这意味着可以在类作用域或仅在构造函数中为变量或对象分配值。 您不能使用构造函数以外的任何其他方法来更改值或将值重新分配给只读变量或对象。
让我们通过一个例子来理解这一点。 考虑以下名为DbManager的类。
public class DbManager
{
public readonly string connectionString =
"Specify your database connection string here.";
public DbManager()
{
connectionString = "You can reassign a value here.";
}
public void ReAssign()
{
connectionString = "This is not allowed";
}
}
上面的代码将无法编译,并且将显示图2所示的错误。
在C#中使用static关键字
C#中的static关键字可用于变量,方法或对象。 请注意,类的静态成员属于对象的类型,而不是该类型的实例。 换句话说,使用类名而不是实例名访问静态成员。
考虑以下名为Utility的类,其中包含一个静态方法。
public class Utility
{
public static void SomeMethod()
{
//Write your code here
}
}
您不能使用Utility类的实例调用方法SomeMethod()
。 相反,您应该使用以下语法调用此方法。
Utility.SomeMethod();
相同的规则适用于静态变量或静态对象。 您只能使用下面显示的语法来引用类的静态成员。
ClassName. Member;
要么
ClassName. Member();
类的构造函数可以是静态的。 类的静态构造函数用于初始化类的静态成员。 但是,类的静态构造函数不能接受参数。
const,readonly和static的规则
这是使用const,readonly和static关键字时可以遵循的经验法则。 当变量中包含的值在应用程序的生存期内永不更改时,请使用const关键字。 当您不确定是否需要更改对象变量的值,但又想防止其他类更改该值时,请使用readonly关键字。 当您希望类的成员属于该类型而不是该类型的实例时,请使用static关键字。
如何在C#中执行更多操作:
- 如何在C#中使用数据注释
- 如何在C#8中使用GUID
- 何时在C#中使用抽象类与接口
- 如何在C#中使用AutoMapper
- 如何在C#中使用Lambda表达式
- 如何在C#中与Action,Func和Predicate委托一起使用
- 如何在C#中与委托人一起工作
- 如何在C#中实现一个简单的记录器
- 如何在C#中使用属性
- 如何在C#中使用log4net
- 如何在C#中实现存储库设计模式
- 如何在C#中使用反射
- 如何在C#中使用FileSystemWatcher
- 如何在C#中执行延迟初始化
- 如何在C#中使用MSMQ
- 如何在C#中使用扩展方法
- 如何在C#中使用Lambda表达式
- 何时在C#中使用volatile关键字
- 如何在C#中使用yield关键字
- 如何在C#中实现多态
- 如何在C#中构建自己的任务计划程序
- 如何在C#中使用RabbitMQ
- 如何在C#中使用元组
- 探索C#中的虚拟和抽象方法
- 如何在C#中使用Dapper ORM
- 如何在C#中使用flyweight设计模式
翻译自: https://www.infoworld.com/article/3546242/how-to-use-const-readonly-and-static-in-csharp.html