C#中静态字段声明时赋值与构造函数中赋值
C#中静态字段是属于类的,访问的时候:用类名点成员名的方式。
赋值初始化的时候,可以在声明的时候赋值,也可以在静态构造函数中赋值。
如果在声明中、静态构造函数中都赋值,那么最终该成员的值,是取自哪一个呢?
验证实例:声明一个类型Foo,含有一个静态成员,并且该静态成员在声明时、与静态构造函数中都赋了值。
成员Result属性的作用是,将最终的静态属性FooNumber的值取出
public class Foo
{
// 声明一个静态属性,并在声明的时候赋值
public static int FooNumber { get; set; } = 1234; public int Result { get; set; } static Foo()
{
FooNumber = 20;
} public Foo()
{
Result = FooNumber;
}
}
Main方法
class Program
{
static void Main(string[] args)
{
Foo foo1 = new Foo();
Console.WriteLine($"foo1对象中的FooNumber属性的最终值:{foo1.Result}"); Console.ReadKey();
}
}
控制台结果:

通过ILSpy工具查看编译后生成的代码,如下:

结论:如果类中的静态字段或者属性,在声明时与静态构造函数中都赋值,那么编译器在编译的时候,会将声明时的值移动一个位置(至静态构造函数中,且在未编译前构造函数中的赋值之前)。
从而最终显现的值为:编译前,在构造函数中所赋得值。
C#中静态字段声明时赋值与构造函数中赋值的更多相关文章
- oracle 数据库中某个字段逗号分隔,得到对应列中的个数(列转行)实现方法
由于各种原因,数据的原则问题,导致某个字段上出现多个数据(依据分隔符隔开),比如 name 字段为 张三;李四;王五等等 需求:求一张表中name字段中出现的个数: 想要得到的结果为: 对应的sql语 ...
- resultMap自定义映射---8.3.1. 解决列名(表中的字段名称)和实体类中的属性名不一致
1.1.1.1. 步骤一:将驼峰匹配注释掉 --------------测试完成后仍然 回来开启 其他地方可能用到 一旦注释掉驼峰匹配,那么再通过queryUserById查询的结果中,用 ...
- java中子类继承父类时是否继承构造函数
来源:http://www.cnblogs.com/sunnychuh/archive/2011/09/09/2172131.html --------------------- java继承中对构造 ...
- C#字段声明部分如何调用该类中的方法进行初始化?
问题描述: 有时,功能需求,需要在初始化字段时,需要视不同情况赋予不同字段值. 解决办法: 将方法设为static即可. e.g. public string str = SetStr(); publ ...
- 在浏览器中打开php文件时,是Linux中的哪个用户执行的?
https://segmentfault.com/q/1010000002541340 如题,这样我就可以针对这个用户设置权限了.而且这个用户是怎么关联上的,怎么查看? 解答一: .是执行 PHP 指 ...
- 循环取到json中的字段数据,加到html中
$.ajax({ type:'post', data:{specialName:specialName,count:count}, url:"admin/pcAdminGetArticleL ...
- iOS开发中的错误整理,重写的构造函数中,没有通过self调用
- Java中的字段和属性
Java中的属性,通常可以理解为get和set方法.而字段,通常叫做“类成员”. 属性只局限于类中方法的声明,并不与类中其他成员相关.例如:void setA(String s){}String ge ...
- 面向对象银角大王补充2-self就是调用当前方法的对象-静态字段,公有属性-封装的理解-继承的理解,普通方法,静态方法
self是什么,就是一个函数,就是一个形式参数 4.self就是调用当前方法的对象 静态字段,公有属性 静态字段使用场景,每个对象中保存相同的东西时,可以使用静态字段,公有属性 5.封装的理解 类中封 ...
- Python之路【番外篇】回顾&类的静态字段
回顾 回顾:字符串.列表.字典的修改关于内存的情况 一.字符串 str1 = 'luotianshuai' str2 = str1 print id(str1) print id(str2) prin ...
随机推荐
- K8S informer机制
一.informer介绍 Kubernetes基于声明式API的设计理念,所谓声明式API,即告诉Kubernetes Controller资源对象的期望状态,这样为Kubernetes在事件通知后, ...
- vue- cube-scroll踩坑记
坑: 下拉刷新,上拉加载一直处于加载中 --- 原因:未结束此次下拉或上拉 ---解决:forceUpdate()结束上拉或下拉 无法正常滚动 --- 原因:数据更新了,但页面高度未变化 -- ...
- 整理15款实用javascript富文本编辑器
百度UEditor 官方网址:http://ueditor.baidu.com/website/ UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验 ...
- PAT-basic-1023 组个最小数 java
一.题目 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...
- vue3+ts+vant制作音乐播放器(进度条拖拽、倍速切换、上一曲、下一曲)完整版
1.进度条的用的是vant的Progress组件,比手写进度条方便很多,有自带的事件 2.H5页面兼容pc 效果展示 上代码 一.template模块 <template lang=" ...
- mobx hook中的使用
class import { inject, observer } from "mobx-react"; // 需要使用mobx-react提供的Provider 包裹,需要使用的 ...
- holiday07
第七天 grep常用的两种模式查找 参数 含义 ^a 行首,搜寻以a开头的行 ke$ 行尾搜寻以ke结束的行 echo 文字内容 echo会在终端显示指定参数的文字,通常会和重定向 联合使用 重定向& ...
- 【Qt】汇总Qt坑若干
1..pro里添加了类以后调用时还是报错? solution:注意添加或者修改以后要保存保存保存,否则Qt是不会自己更新的! 2.在ui界面修改了类的成员名,保存了以后.cpp里调用,成员名还是不更新 ...
- ASCII,unicode与utf-8的区别
ASCII,unicode与utf-8的区别: ASCII码只有127个字母被编到计算机中,无法处理中文,ASCII 编码是 1 个字节 unicode是为了解决因各国标准不同而产生乱码的问题.uni ...
- vins-fusion(1)安装编译
https://github.com/HKUST-Aerial-Robotics/VINS-Fusion https://blog.csdn.net/haner27/article/details/1 ...