一、变量
C#共有其中变量类型有:静态变量、实类变量、数组元素、数值参数、引用参数、输出参数和局部变量
先定义一个简单的类来说明,如下:
public class VariableDefine
{
private static uint variableUInt;
public static uint VariableUInt { get => variableUInt; set => variableUInt = value; }
string VariableStr;
public VariableDefine(string version)
{
VariableStr = version;
}
public static void Fun()
{
Console.WriteLine(variableUInt);
}
/// <summary>
/// 变量类型
/// </summary>
/// <param name="intArray">intArray[0]数组元素</param>
/// <param name="a">数值参数</param>
/// <param name="b">引用类型</param>
/// <param name="c">输出参数</param>
public void Fun(int[] intArray, int a, ref int b, out int c)
{
//局部变量i
var i = 0;
c = i;
}
}
对于静态变量在被创建加载之后失效,当被卸载后失效,静态变量的初始值也为此类型的变量的默认值
对于实例变量当创建某类的一个实例的时候,隶属于该类的实例变量也被生成,当不再有关于这个实例的引用而且实例的析构函数执行了以后,此实例变量失效
对于数组元素当任意一个数组实例被创建时,这个数组的元素也被同时创建,当不再有任何正对这个数组实例的引用时,它的元素也就此失效
当一个不带有ref 或out 修饰参数被声明时,我们称它为数值参数
参数当一个带有ref 修饰语的参数被声明时,我们称之为引用参数
参数当一个带有out 修饰语的参数被声明时,我们称之为输出参数
局部变量被局部变量声明语句创建
C#编译器不容许在表达式中使用未初始化的变量
变量初始化要注意两点的是:(1)变量是类或结构中的字段,如果没有显示初始化,创建这些变量时,其默认值就是0(2)方法的局部变量必须在代码中显示初始化,之后才能在语句中使用它们的值。
二、常量
C#可以定义两种类型的常量,静态常量用const来定义在程序编译的时候确定,一种是动态常量用readonly来定义在运行时确定
静态常量使用方便,性能高,但一旦定义之后就不可以改变,在一个引用第三方程序集上面如果定义了一个静态常量,当它定义的值改变时你不得不重新引用生成主程序
动态常量使用灵活,能很好的支持程序的扩展性
下面一个事例就是通过读取XML文档来给动态常量赋值
public sealed class ReadOnlyModel
{
public readonly List<Company> ListCompany;
public ReadOnlyModel(string companyInfoPath)
{
XElement companys = XElement.Load(companyInfoPath);
var elements = from e in companys.Elements("company")
where e.Element("name").Value.Equals("C#")
select e;
ListCompany = GetListCompany(elements);
}
/// <summary>
/// 解析xml文档
/// </summary>
/// <param name="elements"></param>
/// <returns></returns>
private List<Company> GetListCompany(IEnumerable<XElement>elements)
{
var listCompany = new List<Company>();
foreach (var element in elements)
{
var companyModel = new Company()
{
CompanyName = element.Element("name").Value,
CompanyEmail = element.Element("email").Value
};
listCompany.Add(companyModel);
}
return listCompany;
}
}










