首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

声明字符串public static readonly与public const vs public static const

这个问答内容涉及到了C#编程语言中的不同类型的变量声明和定义。下面是对这个问答内容的完善且全面的答案:

在C#编程语言中,声明字符串有多种方式,其中public static readonly、public const和public static const都是常用的声明方式。

  1. public static readonly

public static readonly是一个只读静态变量,它的值在初始化之后不能被修改。这种变量通常用于定义常量,例如:

代码语言:csharp
复制
public class MyClass
{
    public static readonly string MyString = "Hello, World!";
}
  1. public const

public const是一个编译时常量,它的值在编译时就已经确定,不能在运行时被修改。这种变量通常用于定义不会改变的常量,例如:

代码语言:csharp
复制
public class MyClass
{
    public const string MyString = "Hello, World!";
}
  1. public static const

public static const是一个静态只读常量,它的值在编译时就已经确定,不能在运行时被修改,也不能在实例化对象时被修改。这种变量通常用于定义不会改变的常量,例如:

代码语言:csharp
复制
public class MyClass
{
    public static const string MyString = "Hello, World!";
}

总结:

  • public static readonly是一个只读静态变量,用于定义常量。
  • public const是一个编译时常量,用于定义不会改变的常量。
  • public static const是一个静态只读常量,用于定义不会改变的常量。

在选择声明方式时,需要根据实际需求和使用场景来选择最适合的方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • staticconstreadonlystatic readonly的区别联系

    主要作用于实例化的对象的只读属性 4、static readonly修饰符 初始化时机:运行时,是两个关键字的组合 值状态:允许修改,声明时赋值或者静态构造函数中赋值 修饰范围:字段 主要应用场景:第一...,和const相比,它主要应用于引用性变量;而const,只能用于string类型的引用性变量;第二,类的只读公共属性 总结: const是静态的、编译期变量,只能在声明变量的时候赋值。...readonly是运行时变量,可以在声明的时候或在构造函数内赋值。 static readonly变量就变成了静态的、编译期变量。 只能静态构造函数中进行初始化。...同时static readonly可以理解为是最简单的一种单例模式实现方式。 const是静态常量,readonly是动态常量.const高效,readonly灵活!...但实际开发中我们经常用static readonly 来代替const, 以平衡const在灵活性上的不足.

    1.4K30

    C#中publicprivatestatic

    现在静下心来想要重新细致的过一遍C#,因为自己做C#没有底气,, 闲话少说 先来一句话 public(共有的) 声明的方法和属性,可以被外部调用. private(私有的) 声明的方法和属性,只能在本类中被调用...,外部看不到. static(静态的) 声明的方法和属性,不需要实例化就能被调用,当然也有公有和私有之分....先看 public(共有的) 声明的方法和属性,可以被外部调用. private(私有的) 声明的方法和属性,只能在本类中被调用,外部看不到. using System; using System.Collections.Generic...再来看静态的 static(静态的) 声明的方法和属性,不需要实例化就能被调用,当然也有公有和私有之分....static void dis1()//公共的静态方法 { Console.Write("1\r\n"); } public void

    1.9K40

    C#基础知识系列八(constreadonly关键字)

    现在再来说明constreadonly吧。 readonlyconst   const修饰的常量是上述中的第一种,即静态常量;而readonly则是第二种,即动态常量。...那么区别可以通过静态常量动态常量的特性来说明:    1、const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化         2、const修饰的常量在编译期间就被解析...因为需要保存常量,所以有内存消耗    5、const只能修饰基元类型、枚举类、或者字符串类型;readonly却没有这个限制 第一个例子: 如果在const前面加了一个static的话,那显然是错误的...,因为const编译之后就已经是static静态字段了 ?...道理也比较简单,就是static readonly是动态常量,变量的值在编译期间不予以解析,所以开始都是默认值,像AB都是int类型,故都是0。

    50620

    巧用 readonly const

    // 运行期常量 public static readonly string name = "张三" ; //编译期常量 public const int age = 20 ; 一、运行期常量和编译期常量...这里有几点很重要的需要注意: 编译期常量只能用内置的整数、浮点数、枚举、字符串或 null 来进行初始化和赋值,在生成 MSIL 的过程中只有这些原始类型的编译期常量才会被替换成字面量; 编译期常量可以在方法内部声明...二、案例 下面我们来看一个案例: namespace readonly_and_const { public class main { public static readonly...下面我们将程序集 readonly_and_const 中的 age 和 name 都进行修改并运行: namespace readonly_and_const { public class main...{ public static readonly string name = "jack"; public const int age = 25; }

    81920

    PHP 8.3 新特性解读

    方法覆盖声明可能会有什么歧义?PHP 会验证覆盖方法的签名父类中被覆盖的方法是否兼容以及从接口继承的实现方法给定接口是否兼容。PHP 不会验证一个方法是否打算重写父类已有的方法。...取消readonly属性的赋值也被视为重新初始化。 在下面的示例中,类A声明了两个readonly属性a和b,它们由__construct()函数初始化。...php class A { public readonly int $a; public readonly int $b; public function __construct(int...非只读类可以扩展只读类 在 PHP 8.3 中,非readonly类可以扩展readonly类。例如,下面的脚本声明了一个readonly类A,其中包含了三个隐式readonly的属性。...虽然readonly类不能声明无类型属性或静态属性,但非readonly类扩展readonly类可以声明无类型属性或静态属性,如下面的脚本所示: <?

    70910

    C#笔记2 —常量

    基本上和c语言中的常量类似,但有区别 在const关键字的基础上,添加了readonlyreadonly关键字在笔记中说明。 常量是固定值,程序执行期间不会改变。...字符串常量包含的字符字符常量相似,可以是:普通字符、转义序列和通用字符 使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分。 这里是一些字符串常量的实例。...public const int c1 = 5; public const int c2 = c1 + 5; public SampleClass(int p1, int...定义方法如下: const double a=3.14;// 正确声明常量的方法 const int b; // 错误,没有初始化 2.动态常量(运行时常量)readonly 在运行时确定值...定义方法如下: class Program { readonly int a=1; // 声明时初始化 readonly int b; // 构造函数中初始化 Program

    1.3K20

    CA1802:在合适的位置使用文本

    值 规则 ID CA1802 类别 “性能” 修复是中断修复还是非中断修复 非中断 原因 某个字段被声明staticreadonly(在 Visual Basic 中为 Shared 和 ReadOnly...规则说明 当调用声明类型的静态构造函数时,将在运行时计算 static readonly 字段的值。...如果 static readonly 字段在声明时被初始化并且静态构造函数不是显式声明的,编译器将发出一个静态构造函数来初始化该字段。...如何解决冲突 若要解决此规则的冲突,请将 staticreadonly 修饰符替换为 const 修饰符。 备注 不建议对所有方案使用 const 修饰符。...static 或 Shared 必须声明为“static”(在 Visual Basic 中为“Shared”)。 const 必须声明为“const”。

    68800

    C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱拆箱,常量变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行....3,常量变量 这里主要讲一下静态常量const和动态常量readonly 1)const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化 2)const修饰的常量在编译期间就被解析...,即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候 此外const常量既可以声明在类中也可以在函数体内,但是static readonly常量只能声明在类中。...1 using System; 2 class P 3 { 4 static readonly int A=B*10; 5 static readonly int B=10;...而static readonly则是动态常量,变量的值在编译期间不予以解析,所以开始都是默认值,像AB都是int类型,故都是0。

    1.3K140

    C# constreadonly 有什么区别

    在写常量的时候,是选择使用 const 还是 static readonly 是一个让人难以决定的问题,本文告诉大家这两个方法的区别。...请看下面两个代码有什么区别 const string str = "xxxxx"; static readonly string str = "xxxxx"; const 编译时常量...对于隐式转换,如果是 const 支持隐式转换,如果是static readonly,不支持 (1)const常量在编译时解析;而static readonly常量在运行时解析。...(2)const常量必须在定义时初始化;而static readonly常量可以在定义时初始化,也可以在构造函数中初始化; (3)非常确定不会改变的常量值可以用const,必须写在函数体内的常量需要用const...(4)常量需要被客户端引用,且可能会改变,应该用static readonly

    28620
    领券