首页 > 其他分享 >字段初始化无法引用非静态字段,原因

字段初始化无法引用非静态字段,原因

时间:2023-11-28 15:49:32浏览次数:35  
标签:初始化 静态 C# 实例 引用 构造函数 赋值

原文链接:https://blog.csdn.net/lishimin1012/article/details/82801094

1》C#语法规则:在 C# 中不允许使用未初始化的变量。

2》属性内存和变量内存的分配的时间不一样。 属性是用的时候分配,而变量是在类初始化时候分配。

3》在实例一个类时,因为静态字段赋值动作已经在静态构造函数中完成,实例化的字段会在非静态构造函数中实例化,而两者的时间前后是静态构造函数执行早于非静态构造函数,也洽洽是这个原因会造成两个问题:

1,当你用非静态字段给静态字段赋值时,字段一直为空错误

2,当你在类中给非静态赋值时:字段初始化无法引用非静态字段

三,解决方法:

1》因为初始化的时候顺序问题造成的问题,我们可以将对应代码放到当前需要赋值的类的构造函数中执行。

2》使用属性的get来赋值,

标签:初始化,静态,C#,实例,引用,构造函数,赋值
From: https://www.cnblogs.com/Dongmy/p/17862082.html

相关文章

  • 指针和引用
    难易度:简单备考建议指针是无法在复赛考察的,所以在初赛考察的可能性大,大家平常写题目又不用,所以在初赛备考时应该引起重视。结合2023新修订的考试大纲。除了指针本身的概念,涉及到指针的知识点共有3个:1.基于指针的数组元素访问2.字符指针3.指向结构体的指针什么是指......
  • 神经网络入门篇:详解随机初始化(Random+Initialization)
    当训练神经网络时,权重随机初始化是很重要的。对于逻辑回归,把权重初始化为0当然也是可以的。但是对于一个神经网络,如果把权重或者参数都初始化为0,那么梯度下降将不会起作用。来看看这是为什么。有两个输入特征,\(n^{[0]}=2\),2个隐藏层单元\(n^{[1]}\)就等于2。因此与一个隐藏层......
  • (二十九)C#编程基础复习——static静态成员
    在C#中,我们可以使用static关键字声明属于类型本身而不是属于特定对象的静态成员,因此不需要使用对象来访问静态成员。在类、接口和结构体中可以使用static关键字修饰变量、函数、构造函数、类、属性、运算符和事件。注意:索引器和析构函数不能时静态的。若要定义某个成员时使用sta......
  • 静态文件相关
    #三种方式 第一种:<linkrel="stylesheet"href="/static/bootstrap/css/bootstrap.min.css"> 第二种:{%loadstatic%}<linkrel="stylesheet"href="{%static'bootstrap/css/bootstrap.min.css'%}">......
  • Docker容器初始化
    dockerexec-it容器ID/bin/bash进入容器内部,容器内部基本上很多命令都被删除,例如ping、curl、vim、vi、ip。如果有在容器内部调试的需求,没有这些基础命令是非常难受的。在制作镜像时,都会使用一个基本的系统镜像来构建,基础镜像一般分为redhat系列和debian系列。1:Debian系列......
  • #P1042. 静态RMQ[ST表模板]
    题意是:给定一个长度为N的数列,和M次询问,求出每一次询问的区间内数字的最大值。ST表的基本功能是对区间进行查询,其核心使用的是倍增的思想f[i][k]:意思是从第i个数开始往后2^k个数f[i][k]=max(f[i][k-1],f[i+2^k-1][k-1])求【l,r】区间max(f[i][k],f[r-2^k+1][k])#define......
  • 无涯教程-Linux - 引用机制
    在本章中,我们将详细讨论Shell引用机制。我们将从讨论元字符开始。元字符UnixShell提供了各种元字符,这些元字符在任何Shell脚本中使用时都有特殊的含义,并且除非引号引起,否则会导致终止。如,?匹配单个字符,而在目录中列出文件,而*匹配多个字符。这是大多数Shell特殊字符(也称为......
  • 静态变量
    代表「静态」的关键字是static,它拥有多种含义。用于声明某个变量是持久存储的(类似于全局变量)。用于限制某个变量/函数不能从其他文件中访问。用于声明一个成员变量/函数是一个全局变量/函数(所有对象共有)。接下来我们分别对这几种情况来做讨论。用于持久存储的声明与全局......
  • 【WPF】如何引用System.Windows.Forms;
    修改项目的csproj文件<PropertyGroup><OutputType>WinExe</OutputType><TargetFramework>net6.0-windows</TargetFramework><Nullable>enable</Nullable><UseWPF>true</UseWPF><UseWindowsFo......
  • python 对象 初始化并设置默认值
    Python对象初始化并设置默认值的实现步骤在Python中,我们经常需要为对象设置默认值。这些默认值可以在对象初始化时被设置,并在对象的方法中使用。本文将介绍如何使用Python的类和对象来实现对象初始化并设置默认值的功能。我们将根据以下步骤来完成这个任务:创建一个类定义初始......