找回密码
 立即注册
查看: 416|回复: 0

C# 变量

[复制链接]
发表于 2022-1-25 10:50 | 显示全部楼层 |阅读模式
参考Unity 3D C# 脚本基础
一、变量类型

1.整数类型


C# 将整数分为 8 种类型,如下表所示。使用时,根据数值的可能大小,选择范围最小的类型,一般常用的类型为 short、int 和 long 3 种。
    sbyte 有符号 8 位整数   -128 127 byte  无符号 8 位整数   0 255 short 有符号 16 位整数  -3276832767 ushort    无符号 16 位整数  065535 int   有符号 32 位整数  -21474896482147483647 uint  无符号 32 位整数  042994967295 long  有符号 64 位整数  -2 2 ulong 无符号 64 位整数  0 2
int age=5; byte classSize=23; ushort student=2344; 2.浮点类型


float   32位单精度浮点类型  -22
double  64位单精度浮点类型  -22
float angles=36.5f; double rate=0.253D; 3.布尔类型

bool b=true; 4.字符类型


为保存单个字符,C#支持字符(char)类型,字符类型的字面量是用单引号括起来的。一些特殊字符要用反斜线\后跟一个字符表示,称为转义字符,如下表所示。
\'  单引号 \"  双引号 \\  反斜线 \0  空 \a  报警 \b  退格 \f  换页 \n  换行 \r  回车 \t  水平制表符 \v  垂直制表符 5.引用类型


引用类型是构建 C# 应用程序的主要数据类型,C#的所有引用类型均派生自 System.Object
6.枚举


使用枚举类型可以增强程序的可读性,在 C# 中使用关键字 enum 类声明枚举类型的变量,格式如下:
enum枚举名称 {  常量1=值1; 常量2=值2; ? 常量n=值n }
参考 C#枚举高级战术

枚举类型的作用是限制其变量只能从有限的选项中取值,这些选项(枚举类型的成员)各自对应于一个数字,数字默认从 0 开始,并以此递增。例如:
public enum Days {     Sunday, Monday, Tuesday, // ... }
其中 Sunday 的值是 0,Monday 是 1,以此类推。为了一眼能看出每个成员代表的值,一般推荐显示地将成员值写出来,不要省略:
public enum Days {     Sunday = 0, Monday = 1, Tuesday = 2, // ... }
C# 枚举成员的类型默认是 int 类型,通过继承可以声明枚举成员为其它类型,比如:
public enum Days : byte {     Monday = 1,     Tuesday = 2,     Wednesday = 3,     Thursday = 4,     Friday = 5,     Saturday = 6,     Sunday = 7 }
枚举类型一定是继承自 byte、sbyte、short、ushort、int、uint、long 和 ulong 中的一种,不能是其它类型。下面是几个枚举的常见用法(以上面的 Days 枚举为例):
// 枚举转字符串 string foo = Days.Saturday.ToString(); // "Saturday" string foo = Enum.GetName(typeof(Days), 6); // "Saturday" // 字符串转枚举 Enum.TryParse("Tuesday", out Days bar); // true, bar = Days.Tuesday (Days)Enum.Parse(typeof(Days), "Tuesday"); // Days.Tuesday  // 枚举转数字 byte foo = (byte)Days.Monday; // 1 // 数字转枚举 Days foo = (Days)2; // Days.Tuesday  // 获取枚举所属的数字类型 Type foo = Enum.GetUnderlyingType(typeof(Days))); // System.Byte  // 获取所有的枚举成员 Array foo = Enum.GetValues(typeof(MyEnum); // 获取所有枚举成员的字段名 string[] foo = Enum.GetNames(typeof(Days));
另外,值得注意的是,枚举可能会得到非预期的值(值没有对应的成员)。比如:
Days d = (Days)21; // 不会报错 Enum.IsDefined(typeof(Days), d); // false
即使枚举没有值为 0 的成员,它的默认值永远都是 0。
var z = default(Days); // 0
枚举可以通过 Description、Display 等特性来为成员添加有用的辅助信息,比如:
public enum ApiStatus {     [Description("成功")]     OK = 0,     [Description("资源未找到")]     NotFound = 2,     [Description("拒绝访问")]     AccessDenied = 3 }  static class EnumExtensions {     public static string GetDescription(this Enum val)     {         var field = val.GetType().GetField(val.ToString());         var customAttribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute));         if (customAttribute == null) { return val.ToString(); }         else { return ((DescriptionAttribute)customAttribute).Description; }     } }  static void Main(string[] args) {     Console.WriteLine(ApiStatus.Ok.GetDescription()); // "成功" } 二、变量声明

1.修饰


private(默认修饰符),只能在本类中访问。
proected,只能在类或派生类中访问。
internal,只能在本项目中访问。
如果想让脚本中定义的变量在 Unity 3D 中的 Inspector 面板上显示,必须用 public 修饰。
//public 变量不想在编辑器中显示 [HideInInspector] public int A; //private变量想在编辑器中显示 [SerializeField] [Range(1,100)]//范围 private int b; 2.var


参考 C#中 Var关键字
Var是C#3.5新增的一个关键字,用来代替某些具体的类型,由编译器自动判断变量类型,编译器可以根据变量的初始化值“推断”变量的类型。

其主要作用有2个:
    代替具体类型,实现快速编程的隐式类型用法,常见在foreach便历中,实质是VS编译器给我们提供的一个语法糖。 和new 一起使用,来实现一个匿名类型,用来代替需要预先创建的实体类,灵活高效。

隐式类型用法:
var a=1;//int a=1; var b="1";//string a="1"; var c=DateTime.Today;//DateTime c=DateTime.Today;
在定义一个具体类型的变量时,可以利用var来代替实际的真正类型,如上,//前面与后面的代码完全等价,编译器会自动根据后面的变量值的类型帮我们转换成最匹配的类型,属于一个与语法糖。

注意点:
    无法使用var来定义一个全局变量,只能定义在方法的内部(因为预先不可知,所以预先不可置) 不能用来定义函数的签名,包括返回值,参数类别 在定义变量的时候,必须先给值,不能为null,也不能只定义不给值。 一旦一个变量被定义成var类型,并确定了指定的类型以后,不能再给这个变量其他类型的值。例: var a="1";a=1;(错误:无法将类型“XX”隐式转换成“YY”)

在开发中,我们有时会像下面的代码一样声明一个匿名类:可以看出,在匿名类的语法中并没有为其命名,而是直接的一个new { }就完事了。从外部看来,我们根本无法知道这个类是干神马的,也不知道它有何作用。
var annoyCla1 = new     {         ID = 10010,         Name = "EdisonChou",         Age = 25     };  Console.WriteLine("ID:{0}-Name:{1}-Age:{2}", annoyCla1.ID,annoyCla1.Name, annoyCla1.Age);
经过调试运行,我们发现匿名类完全可以实现具名类的效果。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-16 17:34 , Processed in 0.162525 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表