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 ...
随机推荐
- viewpager加fragment可滑动加radio跟随滑动
public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener, V ...
- CH340N串口无法检测问题的解决
问题原因: type-C有好几种类型,其中包括能传输数据的,也有不能传输数据.只能供电的.(本质差别就是引脚数目不同) 问题解决:只要将原来的type-C转USB的充电线换成数据线,电脑就能识别CH3 ...
- 2. Marker 标记(就是在地图上放上标记)
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...
- antd DatePicker限制日期的选择
import React from 'react'; import ReactDOM from 'react-dom'; import {Input,DatePicker,Form,Col,Butto ...
- vue 页面中切换国际语言
1.npm i vue-i18n 2. 3.main.js 4.vue页面
- vue 3 打印 print-js
1.安装 npm install print-js --save 2.引用 import print from 'print-js' 3.编写打印函数 const enterDialog = asyn ...
- xlsx 前端导出Excel
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Dapper修改
<table class="table table-bordered"> <tr> <td>商品名称:</td> <td> ...
- 2020第十一届蓝桥杯大赛软件类国赛题目 C/C++ B 组
试题 A: 美丽的 2 本题总分:5 分 问题描述:在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2? #include <stdio.h> #include ...
- 执行Maven的test命令报错
参考网址:https://blog.csdn.net/weixin_46688566/article/details/126470742 解决方案 在pom.xml文件中加入以下依赖: <plu ...