在C#中声明变量使用下述语法:

datatype identifier;,

例如:

int i;

该语句声明int变量i。编译器不允许在表达式中使用这个变量,除非用一个值初始化了改变量。如果你不需要使用它,之声明不初始化也可以。

变量的初始化

变量的初始化是C#强调安全性的另一个例子。简单地说,编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量。大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来对待。这就可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值。

C#有两个方法可确保变量在使用前进行了初始化:

  • 变量是类或结构中的字段,如果没有显式初始化,创建这些变量时,其默认值就是0
  • 方法的局部变量必须在代码中显式初始化,之后才能在语句中使用它们的值。此时,初始化不是在声明该变量时进行的,但编译器会通过方法检查所有可能的路径,如果检测到局部变量在初始化之前它的值,就会产生错误。

在C#中实例化一个引用对象需要使用new关键字。

变量初始化需遵循的规则:

  • 变量必须初始化。否则,编译器就没有推断变量类型的依据。
  • 初始化器不能为空。
  • 初始化器必须放在表达式中。
  • 不能把初始化器设置为一个对象,除非在初始化器中创建了一个新对象。

初始化器是C#3.0的一个新特征。在这里先不细说。先给一个简单的例子展示。

引用类型变量Student如下:

public class Student{
public int Id{get;set;}
public string Name {get;set;}
public string Sex {get;set;}
public int Age {get;set;}
}

Student实例初始化器如下:

Student stu=new Student{Id=1,Name="张三",Sex="男",Age=50};

原来的对象初始化都要进行先创建构造方法,然后才能进行成员的相关操作,C#3.0 提供了对象成员的直接初始化的能力,和初始化一个集合或者是数组一样来初始化对象。

C#变量初始化的更多相关文章

  1. Java类变量和成员变量初始化过程

    一.类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量. 类的编译决定了类的初始化过程. 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: ...

  2. Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序

    先看一道Java面试题: public class Baset { private String baseName = "base"; // 构造方法 public Baset() ...

  3. Go - 变量初始化 及 注意事项

    Go变量 初始化 对 复合类型(数组.切片.字典.结构体)变量的初始化是,有一些语法限制: 1.初始化表达式必须包含类型标签: 2.左花括号必须在类型尾部,不能另起一行: 3.多个成员初始值以逗号分隔 ...

  4. C++变量初始化问题

    初始化和赋值的区别 在C++中,变量初始化和赋值操作符是两个完全不同的概念. 初始化不是赋值,初始化的含义是创建变量分配存储空间时为其赋一个初始值,而赋值的含义是把内存空间的当前值擦除,用一个新值代替 ...

  5. 调整static变量初始化顺序的一个办法

    // wrap the LaunchDir variable in a function to work around static/global initialization order stati ...

  6. java对象中继承和变量初始化顺序浅析

    先上例子代码 public class F { int age = 5; public F() { print(); } public void print() { System.out.printl ...

  7. c++ 类与函数中static变量初始化问题(转)

    首先static变量只有一次初始化,不管在类中还是在函数中..有这样一个函数: void Foo() { ; // initialize std::cout << a; a++; } 里的 ...

  8. C++builder XE10 终于支持类内变量初始化了

    Win32终于支持类内变量初始化了,C++11 用bcc32C编译器  llvm CLang.还支持Unicode 中文汉字 变量名. 用经典的bcc32编译还是不支持! class TPerson ...

  9. uboot环境变量初始化

    一.环境变量概述 1.环境变量的概念 可以理解为用户对软件的全局配置信息,这部分信息应该可以从永久性存储器上读取,能被查询,能被修改. 启动过程中,应该首先把环境变量读取到合适的内存区域,然后利用环境 ...

  10. 【细说Java】Java变量初始化顺序

    Java的变量初始化顺序,对这里一直似懂非懂,面试的时候也经常被问到,但答的一直不好,现在整理记录一下,以后忘记了可以来看看. 程序分为两个部分,第一个部分不考虑继承,第二个部分考虑继承: (1)不考 ...

随机推荐

  1. Hibernate学习8—Hibernate 映射关系(多对多)

    第二节:Hibernate 多对多映射关系实现   比如学生和课程是多对多的关系: 一个学生可以选多个课程: 一个课程可以被多个学生选中,所以是多对多的关系:   1,多对多单向实现: 单向关系: 这 ...

  2. java代码----------实现写出循环

    总结:对于循环次数累加.等等总是不知道在哪一行插入 package com.mmm; //输出10个数字中,小于5的数字 public class hai { public static void m ...

  3. 【UVa】11212 Editing a Book(IDA*)

    题目 题目     分析 get一下IDA*的技巧,感觉总体来说不难,主要是剪枝比较难想. 这是lrj的代码,比较通俗易懂,关键就是选定一个区间再取出来,插入到一个位置,接下来转移到这个状态.     ...

  4. 【UVA】10391 Compound Words(STL map)

    题目 题目     分析 自认已经很简洁了,虽说牺牲了一些效率     代码 #include <bits/stdc++.h> using namespace std; set <s ...

  5. MySql——进阶一(库表的建 删 改)

    基于学生管理系统建立 数据库 和 表 表的样式: 表(一)Student (学生use) 属性名 数据类型 可否为空 含 义 Sno varchar (20) 否 学号(主码) Sname varch ...

  6. OD 实验(十九) - 对多态和变形程序的逆向

    程序: 这个窗口显示这是一个需要去除的 Nag 窗口 点击“确定” 用 PEiD 看一下 这是一个用汇编语言写的程序 逆向: 用 OD 载入程序 Nag 窗口的标题和文本 右键 -> 查找 -& ...

  7. Python - Pyinstaller

    安装 Pyinstaller pip install pyinstaller 使用: test.py print("Hello World!") 命令行输入 pyinstaller ...

  8. 1.docker学习之简介

    什么是Docker Docker是一个开源的应用容器引擎.通俗来说:所谓开源,就是指Docker是开放源代码的,比如用户可以免费使用该源代码, 并在该源代码的基础上自由修改或传播.所谓引擎,指的是程序 ...

  9. keil里面填数据

    编译后寄存器和堆栈的内存数据可以直接写进去的. 寄存器,双击就可以,注意里面是十六进制 堆栈,也是十六进制,八位的 00 00 00 00 ,但这个是从右到左的,比如0x00000006 应该填 06 ...

  10. 开始使⽤ZooKeeper的API

    在之前的章节中,我们使用zkCli工具介绍了ZooKeeper的基本操作.从本章开始,我们将会看到在应用中如何通过API来进行操作.首先介绍一下如何使用ZooKeeper的API进行开发,展示如何创建 ...